使用 ES6/7 特性全新開發的 Node.js MVC 框架:ThinkJS

碼頭工人 8年前發布 | 17K 次閱讀 Node.js 開發 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

文檔

https://thinkjs.org/

 本文由用戶 碼頭工人 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!