社区编辑申请
注册/登录
ThinkJS 2.1版本发布 支持TypeScript且性能大幅提升 原创
开发 前端
类似的Node.js框架有Sails、Meteor,不过ThinkJS是国人研发,更贴近国内的真实需求。ThinkJS今日,ThinkJS 2.1版本正式发布,性能上也有了大幅提升,支持TypeScript具体内容见下文。

ThinkJS1.0版本在2014年9月份发布,是由360奇舞团前端工程师李成银(welefen)主导设计和开发,其命名和项目结构上大量借鉴了ThinkPHP这个在国内知名度很高的PHP框架。ThinkJS2.0版本于 2015年10月30发布,在1.0版本的基础上做了大量改进,功能更加全面,具备可扩展性,并且支持ES 6/7特性。今日,ThinkJS 2.1版本正式发布,其不仅支持TypeScript,性能上也有大幅提升,具体如下:

一:支持TypeScript

TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,向这个语言添加了可选的静态类型,在大型项目里非常有用。ThinkJS 2.1 开始支持了创建 TypeScript 类型的项目,并且开发时会自动编译、自动更新,无需手工编译等复杂的操作。细则如下:

1、创建 TypeScript 项目

2、.d.ts 文件

3、已有项目升级为 TypeScript 项目

  • 修改入口文件
  • 修改 package.json
  • 修改 .thinkjsrc
  • 下载 think.d.ts 描述文件
  • 修改文件后缀
  • 项目文件里添加描述文件

二:性能提升

评价一个框架是否出色,一方面看支持的功能,另一方面也要看性能。虽然 ThinkJS 更适合大型项目,功能和复杂度远远超过 Express 和 Koa,但性能上并不比 Express 和 Koa 逊色多少,具体的测试数据请见下图。

注:以上数据使用分布式压力测试系统测试。

从上图中测试数据可以看到,虽然 ThinkJS 比 Express 和 Koa 性能要差一些,但差别并不大。ThinkJS 和 Sails.js 都更符合大型项目,但 ThinkJS 的性能要比 Sails.js 高很多。

具体测试代码请见:https://github.com/thinkjs-team/thinkjs-performance-test,可以下载代码在本机测试,如果使用 ab 测试工具,请注意该工具在 Mac 系统下很不稳定,多次测试结果会相差很大。

三:更多特性

ThinkJS 2.1版本除了上述两个较为突出的特性以外,更多特性如下:

  • Controller 支持子目录的形式
  • 支持 PostgreSQL 数据库
  • Model schema 支持默认值
  • Hook 里的 middleware 返回 null 可以阻止后续的 middleware 执行
  • http 和 controller 添加 display 的别名方法 render
  • 添加串行执行方法 think.waterfall
  • Validate 支持正则
  • fetch 支持传数据
  • Logic 支持判断请求类型
  • 定时任务里支持直接调用 action
  • Babel 升级到 6
  • 国际化语言对大小写不再敏感
  • 将获取模板文件内容改为异步
  • http 对象不在继承自 EventEmitter 类
  • 去除 think.mode_mini 模式,controller 支持子目录
  • 数据库配置 name 改为 database
  • 修改现在的 fields 为 schema
  • 数据库配置 pwd 改为 password
  • 优化 http 对象生成方式,不用每次都复制
  • 过滤 .svn, .git 等隐藏类型的文件
  • 将文件 bin/index.js 移动为 src/command.js
  • runtime 目录移动到项目根目录下,添加 think.RUNTIME_PATH 路径常量
  • adapter type 增加自动转为小写的功能,并给出提示
  • 增加 thinkData,用于缓存系统常用数据
  • 合并 think.locale 和 controller.locale 方法
  • 修复 nunjucks 模板继承文件找不到的问题
  • 修复 pathname 里含有转义的 / 导致识别错误的问题
  • 修复 http.file 方法返回的数据遭到修改导致源数据也修改的问题
  • 修复路径中 / 在 windows 下需要替换为 \\ 的问题
  • 修复 nunjucks 下模板文件在不在根目录导致报错的问题
  • 修复 production 环境下,页面上可能输出敏感数据的问题
  • 修复 development 模式下,JSON 数据解析失败后没有报错信息不好定位的问题
  • 修复 view root_path 修改后,创建模块时视图路径没更新的问题
  • 修复 required|int 规则校验不正确的问题
  • 修复 redis cache 解析配置的问题
  • 修复 REST API 不支持 logic 的问题
  • 修复 count 方法如果传入字段名是关键字会出错的问题

内容来源:

官网:https://thinkjs.org/

文档:https://thinkjs.org/en/doc.html

责任编辑:王雪燕 来源: 51CTO
相关推荐

2022-04-14 10:10:59

Nginx开源Linux

2022-05-18 10:58:36

LinuxKali Linux

2022-05-09 15:08:56

存储厂商NFV领域华为

2022-05-17 15:51:32

数据中心运维能力基础设施

2022-05-20 14:54:33

数据安全数字化转型企业

2022-05-16 10:36:08

GitHub开源项目

2022-05-06 09:21:21

TypeScriptinterfacetype

2022-05-17 08:39:05

VueViteTypeScript

2022-04-26 23:42:08

Windows 10微软升级

2022-04-19 14:41:29

Oracle数据库SQL

2022-05-07 10:09:01

开发Java日志

2022-05-16 10:49:28

网络协议数据

2022-05-14 08:05:18

Linux内存管理

2022-05-09 11:57:39

云原生实践安全

2022-04-28 09:46:20

Nginx文件Linux

2022-05-24 12:05:36

Testin云测试

2022-05-12 14:44:38

数据中心IT云计算

2022-04-13 18:12:37

TypeScriptPython开发

2022-05-16 08:33:54

漏洞微软安全补丁

2022-04-17 23:09:07

深度学习人工智能芯片

同话题下的热门内容

让程序员心动的11种新编程语言Flutter vs ReactJS:2022年应该选哪个?前端配置化真香~上班又多了60%的摸鱼时间再有人问你什么是分库分表,直接把这篇文章发给他2022年值得使用的 Node.js 框架HTTP 的缓存为什么这么设计?前端监控的搭建步骤,别再一头雾水了!如何加快Java中大型集合的处理

编辑推荐

太厉害了,终于有人能把TCP/IP协议讲的明明白白了!牛人5次面试腾讯不成功的经验HBase原理–所有Region切分的细节都在这里了Javascript如何监听页面刷新和关闭事件如何搭建一个HTTPS服务端
我收藏的内容
点赞
收藏

51CTO技术栈公众号