小弟的規劃表 - http://blog.kerkerj.in/blog/2014/11/01/planning/
好讀版 - http://blog.kerkerj.in/blog/2014/10/17/api-d17/
首先我們就在虛擬機的資料夾底下,建立一個專案資料夾吧!
今天會來簡單切割一下我們的專案目錄
$ cd /vagrant/
$ mkdir TODOAPI
$ cd TODOAPI
$ npm init
// 輸入專案資訊
$
/
| - bin/
| - routes/
| - model/
| - node_modules/
| - logs/
| - config/
| - test/
| - app.js
| - package.json
分別講解一下各個 folder 的工作:
bin
筆者會在 bin 資料夾底下放一個 server.js
這個 server.js 就是會專門用來啟動一個 app.js instance
routes
基本上如果瞭解 MVC 架構的話,routes 就是 controller 的意思,其實如果讀者本身夠瞭解的話,這個資料夾也可以改成 controller 也 ok,應該說,其實資料夾怎麼放都是看個人隨意即可,只是若是要模組化的話,筆者會這樣來處理一個專案結構。
model
拿來放資料庫 schema 以及相關的資料庫操作的資料夾
node_modules
這其實是之後安裝的模組會放在這個資料夾裡,在這邊可以先不用建立沒關係
logs
由於我們是建立一個 restful service,因此 log 的記錄也是很重要的,我們把 log 放在這個資料夾裡
configs
我們在這個資料夾裡放置一些專案設定,例如 db 設定或者是 log 的設定等等
test
撰寫測試程式的資料夾~
app.js
程式的進入點,可以想像成 index.php~
package.json
專案的資訊以及相關模組的資訊都會被放在這裡!
其實關於專案結構有許多不同的討論,express 也有一個專案自動產生器,不過如果對結構內容不瞭解而使用產生器的話,很容易變成只知表面不知內部運作,因此我們還是一步一步來,先定義好我們專案的需求結構
另外,因為我們是建立 restful API service,在此並沒有用到 html 頁面,也因此就沒有 view 或 public 這兩個資料夾囉~
延伸閱讀:
我們可以透過觀摩別人的專案來參考他們的專案架構:
Node and Angular To-Do App: Application Organization and Structure
node.js & express - global modules & best practices for application structure
在 Github 上的討論,非常值得一看: Github discussion
後來覺得也可以模仿 rails 的分法:
/
| - app/
| - ----controllers/
| - ----models/
| - ----views/
| - ----helpers/
| - node_modules/
| - logs/
| - libs/
| - public/
| - config/
| - test/
| - server.js
| - package.json
都 OK!