首先我們就在虛擬機的資料夾底下,建立一個專案資料夾吧!

今天會來簡單切割一下我們的專案目錄

建立新專案目錄:

$ 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 頁面,也因此就沒有 viewpublic 這兩個資料夾囉~

延伸閱讀:

我們可以透過觀摩別人的專案來參考他們的專案架構:

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!