使用 ES6/7 特性全新開發的 Node.js MVC 框架:ThinkJS
介紹
ThinkJS 是一款使用 ES6/7 特性全新開發的 Node.js MVC 框架,使用 ES7 中async/await,或者 ES6 中的 Generator Function 特性徹底解決了 Node.js 中異步嵌套的問題。同時吸收了國內外眾多框架的設計理念和思想,讓開發 Node.js 項目更加簡單、高效。
使用 ES6/7 特性來開發項目可以大大提高開發效率,是趨勢所在。并且新版的 Node.js 對 ES6 特性也有了較好的支持,即使有些特性還沒有支持,也可以借助 Babel 編譯來支持。
//user controller, home/controller/user.js export default class extends think.controller.base { //login action async loginAction(self){ //如果是get請求,直接顯示登錄頁面 if(this.isGet()){ return this.display(); } //這里可以通過post方法獲取所有的數據,數據已經在logic里做了校驗 let data = this.post(); let md5 = think.md5('think_' + data.pwd); //用戶名和加密后的密碼去匹配數據庫中對于的條目 let result = await this.model('user').where({name: data.name, pwd: md5}).find(); //如果未匹配到任何數據,表示用戶名或者密碼錯誤 if(think.isEmpty(result)){ return this.fail('login fail'); } //獲取到用戶信息后,將用戶信息寫入session await this.session('userInfo', result); return this.success(); } }
項目中可以大膽使用 ES6/7 里的所有特性,借助 Babel 編譯,可以穩定運行在 >=0.12.0 的 Node.js 環境中。
特性
- 支持使用 ES6/7 全部特性來開發項目
- 支持使用 TypeScript 開發項目
- 支持多種項目結構和多種項目環境
- 支持多級 Controller
- 支持 MySQL,MongoDB,SQLite, PostgreSQL 等多種數據庫
- 代碼自動更新,無需重啟 Node 服務
- 支持 socket.io,SockJS 等多種 WebSocket 庫
- 支持 Memory,File,Db,Redis 等多種 Session
- 支持 Memory,File,Redis,Memcache 等多種 Cache
- 支持 ejs,jade,swig,numjucks 等多種模版引擎
- 支持切面編程,支持 __before,__after 等多種魔術方法
- 支持自定義 400,404,500,503 等多種錯誤頁面
- 支持命令行調用和執行定時任務
- 豐富的 Hook 和 Middleware
- 詳細的日志,如:請求日志、錯誤日志、性能日志
- 支持命令自動創建 REST API
- 支持國際化和多主題
- 豐富的測試用例,1500+ 測試用例,代碼覆蓋率 > 95%
安裝 ThinkJS
npm install -g thinkjs
創建項目
thinkjs new project_path --es6
安裝依賴
npm install
啟動服務
npm start
啟動后,會看到類似下面的信息:
[2016-01-12 15:09:51] [THINK] Server running at http://127.0.0.1:8360/ [2016-01-12 15:09:51] [THINK] ThinkJS Version: 2.1.0 [2016-01-12 15:09:51] [THINK] Cluster Status: closed [2016-01-12 15:09:51] [THINK] WebSocket Status: closed [2016-01-12 15:09:51] [THINK] File Auto Compile: true [2016-01-12 15:09:51] [THINK] File Auto Reload: true [2016-01-12 15:09:51] [THINK] App Enviroment: development
文檔
本文由用戶 碼頭工人 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!