over 1 year ago

平時很喜歡使用Express,因為它很精準的解決了後端頁面Router的問題,同時提供漂亮的路由框架與豐富的中間件生態支援,所以使用上不會覺得自己寫程式寫得很心虛;
但因為工作需求,所以就必須採用Sails這個基於Express二度開發的框架,強打快速搭建RESTful API後端,透過更大、複雜的框架解決反覆再CRUD的問題,並預先設定專案開發的流程與架構
不過我本身比較喜歡小而美的Express,所以看到Sails的設計還是糾結了一陣子,所以決定花點時間爬官網並練習打造部落格系統,如果你跟我一樣都有基本的Express實作背景,那這系列的Sails.js上手文就很適合閱讀。

目前主要參考的資料是 Anatomy of a Sails App利用Sails.js+MongoDB开发博客系统(1)--创建项目

Sails風格

這比較是我個人對應Express的心得,Sails開發中主要是以編寫Config設定檔的方式,Sails在啟動時會載入所有的設定檔並自動串連,這裡的串聯是指RESTful API自動對應到Controller的CRUD,定義函式放在/api底下而設定檔則是放在/config底下,例如說Express中間件順序、Routing、環境變數等等都是在設定檔之中,後續會以專案架構方式呈現。

專案架構
/api/controller 在使用`sails generate api {User}`會產生一個Model與Controller檔案,Controller顧名思義就是負責處理Model業務邏輯的部分
/api/model 在使用 sails generate api {User} 會產生一個Model與Controller檔案,Model主要定義資料庫的資料格式
在Sails中比較特別是他有自定義ORM/ODM系統 Waterline,舉凡MySQL、MongoDB、Redis等等都有相對應的Sails內建模組(需另外安裝與設定),提供ORM設計最主要就是提供簡易的CRUD,後續會再提。
/api/policy policy就是route的檢查規則,這會對應到/config/policy.js
/api/responses 定義基本的reponse function,可以在Controller中使用,Sails有包含一些基本的回覆如badRequest、forbidden等
/api/services service有點像是controller,差別在於service預於不依賴req、res的服務,例如發送Email、定期發文等等
/config 在config中放置大量的config文件,裡頭基本上註解都相當仔細,可以查看並修改

因為我只要單純後端RESTful API Server,所以沒有前端頁面就少了/task:Sails預設用Grunt自動化專案流程/assets:Sails預設靜態檔案位置,發布時會透過Grunt優化並搬移到/.tmp下/view:頁面位置,依照template引擎決定檔案格式這三個資料夾。

快速起步

Sails提供方便CLI指令,可以對照官網使用;
sails new blog --no-frontend
創建blog專案並不加入前端,我只要單純後端RESTful API Server而已,如果有需要可以定義不同的template如EJS、Jade等,Sails都有提供支援
sails lift
啟航,啟動Server,預設端口 1337,也可以輸入node app.js,官網說盡量不要修改app.js(也不需要)
sails generate api <appName>
增加API服務,會自動產生Controller與Model。

下一篇會介紹Sails的觀念與更細節的Config,並以Postman做單獨的RESTful API測試與調用。

← WebAssembly 嚐鮮 Sails.js - 從Express到Sails,打造部落格系統二 : Model配置與設定 →
 
comments powered by Disqus