基於Express的Node項目實踐
先看項目截圖。
一個真實在線上運行項目的大致目錄
項目結構
├── app │ ├── fonts │ ├── ├── ...│ │ └── ...│ ├── img│ ├── ├── ...│ │ └── ...│ ├── middlewares│ │ └── ... │ ├── routes│ ├── ├── ...│ ├── views│ │ ├── ...│ │ ├── index.js│ │ ├── index.tap.js // 單元測試│ │ └── template.js| ├── config.js│ └── server.js // server啟動入口├── bin│ └── wwww // 項目啟動├── config // 各環境配置項│ ├── dev.js // 開發環境│ ├── fat.js // fat測試環境│ ├── index.js // 環境配置讀取入口│ ├── prod.js // 生產環境│ └── uat.js // UAT測試環境├── scripts │ ├── shutdown.sh // 生產環境關閉應用sh│ └── startup.sh // 生產環境啟動應用sh├── tars_config // 生產環境配置│ └── ... ├── wwwroot // 靜態文件目錄│ └── ... // 靜態文件├── app.config.js // 應用配置├── package.json // 你懂得。。。├── README.md├── .git├── .gitignore└── .nvmrc // 指定node版本
代碼劃分的基本原則和動機
- 可輕鬆管理
- 我們的大腦適合處理少量有關聯性的東西,所以我們使用了目錄。它幫助我們集中處理每個小部分文件從而降低複雜性。
- 尺寸合適
- 不要創建僅有一個文件的大目錄。一個目錄下至少放3個文件才是合適的。如同我們不需要開公交車去上班,開個小汽車就好了。因此請通過判斷實際的文件數來決定是否需要創建一個文件夾。
- 恰當的模塊化
- Node社區幾乎都是崇尚小模塊的。但是對於一個中型應用而言,這種分離成小模塊的時間開銷並不會獲得相應的價值體現。
- 容易定位代碼
- 開發一個功能或者修復一個bug時,我們的目標是讓開發者可以輕鬆的定位源文件
- 命名準確且有意義
- 無用的代碼請完全移除掉,不要留在一個單獨的文件或者僅僅注釋掉
- 搜索友好
- 所有的源代碼都放在第一個位置的app目錄下,你可以通過cd命令就可以輕鬆找到
- 簡明的命名
- 現在npm似乎要求所有的包使用小寫命名了。文件名使用kebab-case方式命名,變數使用camelCase方式命名,因為-這個符號在javascript語言中代表減號。
- 變數名稱匹配模塊路徑的基礎名稱,同時kebab-case會轉換為camelCase
- 在代碼旁邊寫上測試
- 把測試寫在代碼旁邊的同級目錄中確實有好處,避免了"../../.."這樣的路徑引用,但個人認為還是要藉助測試框架來完成測試工作,例如Mocha。
- 通過事件減少交叉耦合
- 為了不使你的業務代碼看起來像一團亂麻,必要的事件回調還是非常好的,盡量降低交叉引用,使你的模塊保持獨立。
- 代碼流暢
- app/server.js是應用啟動的唯一入口。
- 不要使用 DSLs(聲明式語言) 作為路由,避免非必要的元編程.(PS: 過渡的封裝是不好滴)
- 不要使用 app.all 來代替 app.getapp.putapp.delete, 這無疑會使程序變得更複雜,需要更多的判斷。
- 使用lower-kebab-case命名文件
- 這種方式可以避免跨平台時的文件系統大小寫敏感問題
- npm禁止在新包名稱中使用大寫,目前這點工作得很好
推薦閱讀:
※收藏指數滿格!幫你打包前端之巔一整年好文!
※San - 一個傳統的MVVM組件框架
※組件化必殺技:styled-components 簡明教程【附視頻下載】
※有關Bootstrap你想要知道的都在這裡