ThinkJS 3 正式版发布!Nodejs框架新选择
ThinkJS 3 正式版发布!Nodejs框架新选择
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,期待更美好的未来吧!
试用了下,比上个版本好用,那个错误展示比较直观
支持!看来得找个时间把 https://imququ.com 给升级一下了。
问下这个框架和 ThinkPHP 有什么关系。。
可以看一下作者这篇文章 http://welefen.com/post/experience-of-thinkjs.html 里面有说明和 ThinkPHP 的渊源
名字是有点像,不过整体架构和思路已经完全不一样了,具体可以看作者发布的这篇文章 开发和维护 ThinkJS 是一种什么样的体验?( http://link.zhihu.com/?target=http%3A//welefen.com/post/experience-of-thinkjs.html ) 里面有讲述它和 ThinkPHP 的关系~
支持下。之前等得比较久投奔了 egg。
支持! 一年前用 thinkjs 写过一个项目,感受很好
现在可以再回来嘛
前端框架层出不穷,开发者表示很伤…不过还是赞一波
这是纯后端框架哦
支持,现在正在用 express 练手,之后再用 thinkjs 搭建自己的博客
用了 egg,感觉还是很多地方不是很方便。thinkjs 看了下文档,感觉非常不错,应该是 egg 最大的对手。
试用了 hapi, koa, expressjs。最终还是感觉 Express 靠谱,生态圈对于选择很重要。
loopback 的开发版本终于上 Typescript 了,写 RESTful APIs 或者 Microservice 更方便了。
看到官网的那个示例,完全断了我想用它的想法,满满的 Apache Struts 的回忆。
<br>//user controller, home/controller/user.js<br>export default class extends think.controller.base {<br> //login action<br> async loginAction(){<br> if(this.isGet()){<br> return this.display();<br> }<br> //data is validated in logic<br> let data = <a target="_blank" href="http://this.post" rel="nofollow noopener">this.post</a>();<br> let result = await this.model('user').where({name: <a target="_blank" href="http://data.name" rel="nofollow noopener">data.name</a>}).find();<br> if(!validateLogin(result)){<br> return this.fail('login fail');<br> }<br> //set userInfo to session<br> await this.session('userInfo', result);<br> return this.success();<br> }<br>}<br>
这个又不是 BUG,功能性的需求而已,你需要,在其它人眼里,也不是必不可少的功能。
Loopback 还没正而把经的用,之前看 StrongLoop 文档,只是感觉功能上是比较全面的一个框架。
再说了,MEAN/MERN stack , Expressjs/mongoose/Monogo 几乎是标配,js 和 Mongo 是天然结合。即使非 NodeJS,比如我大部分时间写 Java, 从几年前开始,也慢慢弱化 RDBMS 了, 项目中混合用 Mongo,Redis,ElasticSearch 很常见了。
loopback 你用了你就知道了,还不如自己写 generator。
mongo 也是个坑,全靠商业推广,不能做正经应用,不如 pg/mysql。
哈哈,怎么讨论起来 Loopback 起来了
好吧,大约从 5 年前开始,已经用 Mongo 几个不正经应用。
现在的一些框架基本都是流行从 callback 到 closure/lambda,expressjs 一个核心概念就是 middleware。
前端框架现在也是借助类似概念,react/redux,angular 4.3 的 HTTP Client 设计等。
后端 PHP 的规范 PSR 中也定义了 Middleware,Java 中的一些框架, vertx (支持多种语言), sparkjava, 都多少有 expressjs 的影子,Spring 5 也引入 fp 类似编程模型,如 RouterFunction, HandlerFunction, (可以使用 Labmda 简化)等,https://github.com/hantsy/spring-reactive-sample/blob/master/boot-routes/src/main/java/com/example/demo/DemoApplication.java。
当然像 ThinkJS 这种直观的 controller,肯定会有人喜欢,就如十几年前我第一次看到 Struts 一样,当时也在试用 Spring MVC,一些人鼓吹 Spring MVC 有多好,我当时也没觉得。但 Struts 最糟糕的设计就是强制继承( Form,Action ),Spring MVC 相对设计自由一些,Spring MVC 真正的优势在于后面借助 Java 5 Annotation 后,整个项目代码就干净了很多。
依旧满满的 PHP 写法即视感
想知道 3.x 的文档在哪里?官网只有 2.0 的
回复帖子:ThinkJS 3 正式版发布!Node.js框架新选择
ThinkJS 3 正式版的发布,无疑是Node.js开发领域的一大喜讯。这款专为现代JavaScript开发者设计的Web框架,以其高性能、可扩展性和丰富的功能,成为了Node.js框架的新选择。
相较于之前的版本,ThinkJS 3 进行了全面的优化和重构。它基于Koa框架构建,继承了Koa的轻量、灵活特点,并进行了大量的扩展和优化。这意味着ThinkJS 3 能够完全兼容Koa的中间件,利用洋葱模型的中间件机制满足多维度的需求。
以下是一个简单的ThinkJS 3 项目创建和启动的示例:
# 安装ThinkJS CLI
npm install -g think-cli
# 创建新项目
thinkjs new demo
# 安装依赖
npm install
# 启动应用
npm start
启动后,你将看到服务器在本地运行的输出信息。ThinkJS 3 还支持TypeScript,提供类型检查和更好的代码提示,增强代码的健壮性和可维护性。
此外,ThinkJS 3 还内置了路由、模板引擎、数据库操作、缓存、日志等常用功能,减少了开发者的重复工作。其简洁的API设计,使得开发者可以快速上手并高效开发。
总之,ThinkJS 3 凭借其现代化的技术栈、高性能和丰富的功能,成为了Node.js开发者的优选框架之一。期待它在未来能够继续引领Node.js开发的新潮流!