迎來ThinkJS 2.1版本 性能提升90%支持TypeScript
ThinkJS1.0版本在2014年9月份發布,是由360奇舞團前端工程師李成銀(welefen)主導設計和開發,其命名和項目結構上大量借鑒了ThinkPHP這個在國內知名度很高的PHP框架。ThinkJS2.0版本于 2015年10月30發布,在1.0版本的基礎上做了大量改進,功能更加全面,具備可擴展性,并且支持ES 6/7特性。今日,ThinkJS 2.1正是發布,其不僅支持TypeScript,性能上相比之前也提升了90%,具體如下:
一:支持TypeScript( 詳情點擊進入 )
TypeScript 是一種由微軟開發的自由和開源的編程語言。它是 JavaScript 的一個超集,向這個語言添加了可選的靜態類型,在大型項目里非常有用。ThinkJS 2.1 開始支持了創建 TypeScript 類型的項目,并且開發時會自動編譯、自動更新,無需手工編譯等復雜的操作。細則如下:
1、創建 TypeScript 項目
2、.d.ts 文件
3、已有項目升級為 TypeScript 項目
- 修改入口文件
- 修改 package.json
- 修改 .thinkjsrc
- 下載 think.d.ts 描述文件
- 修改文件后綴
- 項目文件里添加描述文件
二:性能提升 90%( 詳情點擊進入 )
評價一個框架是否出色,一方面看支持的功能,另一方面也要看性能。雖然 ThinkJS 更適合大型項目,功能和復雜度遠遠超過 Express 和 Koa,但性能上并不比 Express 和 Koa 遜色多少,具體的測試數據請見下圖。
注:以上數據使用分布式壓力測試系統測試。
從上圖中測試數據可以看到,雖然 ThinkJS 比 Express 和 Koa 性能要差一些,但差別并不大。ThinkJS 和 Sails.js 都更符合大型項目,但 ThinkJS 的性能要比 Sails.js 高很多。
具體測試代碼請見:https://github.com/thinkjs-team/thinkjs-performance-test,可以下載代碼在本機測試,如果使用 ab 測試工具,請注意該工具在 Mac 系統下很不穩定,多次測試結果會相差很大。
三:更過特性如下( 詳情點擊進入 )
- 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/en/doc.html
【責任編輯:wangxueyan TEL:(010)68476606】
來自: http://developer.51cto.com/art/201601/504026.htm