ThinkJS 3 正式版发布,Node.js Web 框架

welefen
 welefen
发布于 2017年09月04日
收藏 47

ThinkJS 是一款拥抱未来的 Node.js Web 框架,致力于集成项目最佳实践,规范项目让企业级团队开发变得更加简单,更加高效。我们的 Github 地址是:https://github.com/thinkjs/thinkjs 欢迎大家 star~

在 ThinkJS 2.x 发布的时候,虽然我们带来了很多非常棒的功能,但我们也意识到本身的不足。针对这些问题,开发团队经过几个月的紧张开发,我们很高兴的宣布,ThinkJS 迎来了新的大版本 3.0。目前该版本已经在线上多个项目中使用,简单一个命令就可以让你下载使用它:

npm install -g think-cli

有哪些更新?

正如之前所说,为了解决之前遗留的不足问题我们开发了新版本,下图为我们新版的架构图。

除了引进了新的架构,对框架进行高度解构外,我们还增加了很多新的功能,优化了老版为人诟病的用法,下面就让我们来具体看看有哪些更新吧。

基于 Koa 重构框架架构

相较于之前使用自身集成架构,3.0 最大的改变就是将底层架构基于 Koa 重构。重构之后的 ThinkJS 3.0 版本能完全兼容 Koa 的中间件。使用 Koa 重构主要有下面几个原因:

  • Koa 现在已经比较稳定,洋葱模型的中间件更能满足多维度的需求,同时中间件生态已经慢慢成熟。这些都是 ThinkJS 之前所不具备的,基于 Koa 后就可以站在巨人的肩膀上,可以做的更好。

  • Koa 2.0 中使用更优雅的 async/await 解决异步问题,这个理念和 ThinkJS 是完全一致的。借助 Babel 在 ThinkJS 2.x 版本中就可以使用这些 ES next 语法功能。随着 Node 8.x LTS 的即将发布, async/await 被原生支持后我们就可以不用借助 Babel 转译直接在生产环境中使用了。

精简核心,支持扩展和适配器

ThinkJS 2.x 版本内置了很多功能,这些功能基本上是很多项目的最佳实践,但并不一是每个项目都需要这些所有的功能,但基于 2.x 的架构要实现这个需求就非常困难。所以 ThinkJS 3.0 版本基于 Koa 重构后在这块做了精简,不再提供丰富的功能,而是提供一个最基本的核心,然后通过扩展满足更多的需求。

多进程模型

ThinkJS 2.x 单进程是可选配置,且框架设计较为简单,很多功能需要开发者手动处理。我们在 3.0 中开发了 think-cluter 模块直接内置了多进程模型,最大限度的利用多核 CPU 提高响应速度。 同时,提供一套进程之间通信的方式,如::通知其他进程执行某个任务,代码在线更新后重启所有的子进程。

智能的错误提示

Node.js 开发中一个比较头疼的问题就是错误处理问题,遇到问题后查错和定位问题后比较麻烦,尤其是使用了 Babel 转译之后,为此我们专门开发了 think-trace 模块用来跟踪错误问题,能够更加友好的捕捉显示错误堆栈信息。

还有!

除了刚才说的一些功能,我们还有一些其它的更新要告诉大家:

  • 增加 think-crontab 模块,强化框架的定时任务功能

  • 重构日志功能,基于 think-logger3 模块构建框架日志系统

  • 重构框架数据库操作逻辑,增加 think-model, think-mongoose, think-sequelize模块完善框架数据库操作功能

感谢

最后感谢所有使用 ThinkJS 框架的用户,感谢你们多年来的支持,是你们的存在让我们有了更进一步的勇气。当然还需要感谢所有为 ThinkJS 项目做过贡献的贡献者,包括代码贡献和文档贡献,你们的努力让 ThinkJS 变的越来越棒!如果没时间帮助贡献代码想用其它方式支持我们也可以通过捐赠的方式支持我们,你们的捐赠会用来帮助 ThinkJS 推广。感谢你们所有人,让我们一起拥抱 ThinkJS,期待更美好的未来吧!

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:ThinkJS 3 正式版发布,Node.js Web 框架
加载中

精彩评论

qingfeng哥
qingfeng哥
非常不错的。做了好多事情
ejzhang
ejzhang

引用来自“斯兔2017”的评论

这是不是thinkphp版的js????

引用来自“cns”的评论

提到 ThinkJS,可能有些人会想到,ThinkJS 是不是和国内的 PHP 框架 ThinkPHP 有一些关系呢。没错,刚开始 ThinkJS 就是借鉴 ThinkPHP 来开发的。到2013 年下半年的时候,Node.js 框架主要还是 Express,但用 Callback 处理异步的方式让人非常头疼。一种比较好的方案就是用 Promise,所以我慢慢就有了借鉴 ThinkPHP,使用 Promise 机制开发一个 Node.js 框架的想法。
https://segmentfault.com/a/1190000005950344

引用来自“ejzhang”的评论

2015年3月,我们完成了 ThinkJS 全新版本的设计,目标定位为能够在项目里直接使用 Es2015+ 特性开发,框架自动编译及更新,大大方便 Node.js 项目的开发;同时优化 1.0 版本当中不合理的架构和设计,脱离对 ThinkPHP 的依赖。
这么说现在ThinkJS和ThinkPHP已经没有多大关系了?3.0基于Koa是不是就跟ThinkPHP更不沾边了?
超文本预处理器工程师
超文本预处理器工程师
有人来ThinkJava吗
tumobi
tumobi
基于thinkjs开发的开源微信小程序商城 https://github.com/tumobi/nideshop

最新评论(35

welefen
welefen

引用来自“少惹是非”的评论

2个空格缩进,我强迫症犯了
回复@少惹是非 : 现在整个 Node 社区都是 2 个空格哦
eric678
eric678
少惹是非
少惹是非

引用来自“少惹是非”的评论

2个空格缩进,我强迫症犯了

引用来自“welefen”的评论

回复@少惹是非 : Node 下推荐用 2个空格作为缩进
soga
welefen
welefen

引用来自“少惹是非”的评论

2个空格缩进,我强迫症犯了
回复@少惹是非 : Node 下推荐用 2个空格作为缩进
少惹是非
少惹是非
2个空格缩进,我强迫症犯了
吾爱
吾爱
不错啊,支持
isureker
isureker
好评,用thinkjs撸了一套微信公众号的基础。挺好
绿薯
绿薯
是闭源的么.我看package.json 都依赖私有项目...淘宝的egg不温不火的样子.还不入koa 自己上网找中间件
yak
yak
洋葱模型的中间件多了以后,会引起性能下降,中间件越多,性能越差
yak
yak
为啥没有thinkruby/thinkgo/thinkpython/thinkjava 是不是因为写个简单的js/php脚本,就得要think一下?
返回顶部
顶部