ThinkJS是一款使用ES6/7特性全新開發的Node.js MVC框架,使用ES7中async/await,或者ES6中的Generator Function特性徹底解決了Node.js中異步嵌套的問題。同時吸收了國內外眾多框架的設計理念和思想,讓開發Node.js項目更加簡單、高效。
使用ES6/7特性來開發項目可以大大提高開發效率,是趨勢所在。並且新版的Node.js對ES6特性也有了較好的支持,即使有些特性還沒有支持,也可以藉助Babel編譯來支持。
//控制器代碼示例, home/controller/user.jsexport 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全部特性來開發項目; 支持多種項目結構和多種項目環境;支持Mysql,MongoDB,SQLite等多種資料庫;代碼自動更新,無需重啟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%。安裝
npm install -g thinkjs
創建項目
thinkjs new project_path --es6
http://www.thinkjs.org/doc/create_project.html
Watch Compile
cd project_path;npm run watch-compile
啟動項目
cd project_path;npm start
文檔
原文來自:w3ctech