基於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禁止在新包名稱中使用大寫,目前這點工作得很好

源代碼git地址
推薦閱讀:

收藏指數滿格!幫你打包前端之巔一整年好文!
San - 一個傳統的MVVM組件框架
組件化必殺技:styled-components 簡明教程【附視頻下載】
有關Bootstrap你想要知道的都在這裡

TAG:Nodejs | Express框架 | 前端框架 |