thinkjs 2.0 是第一个全面支持使用 es6/7 特性开发的 node.js 框架,于 2015.10.30 正式发布。使用 es6 里的*/yield 或者 es7 里的 async/await 可以很好的解决异步嵌套的问题,借助 babel 编译,可以稳定运行在 node.js 各个主流版本中。同时 thinkjs 提供了自动编译和自动更新的机制,免去了文件修改后重启 node.js 服务的麻烦。
经过一个多月的紧张开发后,thinkjs 迎来了 2.1 版本。2.1 版本不管在功能还是在性能上都有大幅的改进和提升,具体如下:
支持 typescript
typescript 是一种由微软开发的自由和开源的编程语言。它是 javascript 的一个超集,向这个语言添加了可选的静态类型,在大型项目里非常有用。
thinkjs 2.1 开始支持了创建 typescript 类型的项目,并且开发时会自动编译、自动更新,无需手工编译等复杂的操作。具体请见这里。
性能提升 90%
2.1 版本利用 v8 的 trace(--trace-opt, --trace-inlining, --trace-gc) 分析做了很多深度的优化,同时使用 bluebird 库替换原生和 babel 里的 promise 库,使性能有大幅的提高,具体性能相对于 2.0 版本提升高达 90%。
评价一个框架是否出色,一方面看支持的功能,另一方面也要看性能。虽然 thinkjs 更适合大型项目,功能和复杂度远远超过 express 和 koa,但性能上并不比 express 和 koa 逊色多少,具体的测试数据请见下图。
注:以上数据使用分布式压力测试系统测试。
从上图中测试数据可以看到,虽然 thinkjs 比 express 和 koa 性能要差一些,但差别并不大。thinkjs 和 sails.js 都更符合大型项目,但 thinkjs 的性能要比 sails.js 高很多。
具体测试代码请见:,可以下载代码在本机测试,如果使用 ab 测试工具,请注意该工具在 mac 系统下很不稳定,多次测试结果会相差很大。
升级 babel 到 6
2.0 编译依赖的 babel 为 5,在 2.1 版本里升级到 6,这样和前端代码编译可以更好的结合了。
多级控制器
传统的 mvc 中,controller 只支持一级。虽然在 2.0 版本中添加了模块的功能,但还是不能很好的满足特别大型的项目。
2.1 版本支持多级控制器,也是就在 controller 里可以建立子目录,目录层级深度完全可以根据项目需要来设定,这样可以更好的满足不足项目复杂度的开发需求。
支持 postgresql
继支持 postgresql 后, thinkjs 现在支持 mysql,sqlite,mongodb 和 postgresql 4 种数据库,后续还会支持更多的数据库,开发者也可以进行扩展。
====================================分割线================================