本文轉載自:衆成翻譯
譯者:網絡埋伏紀事
連接:http://www.zcfy.cc/article/1756
原文:https://blog.risingstack.com/node-hero-node-js-project-structure-tutorial/node
大多數 Node.js 框架不會提供固定的目錄結構,而且從開始就作對可能就是一個挑戰。本教程會學習如何正確組織一個 Node.js 項目的結構,從而在應用程序開始增加時避免混亂。npm
組織 Node.js 項目有很多可能的方式 - 而且每種已知的方式都有其興衰。不過,根據咱們的經驗,開發者總想實現一樣的事情:乾淨的代碼,以及輕鬆添加新功能的可能性。json
過去在 RisingStack,咱們有機會建立各類規模的高效 Node 應用程序,也得到了大量關於項目結構注意事項的看法。網絡
咱們總結出了咱們在 Node.js 開發期間貫徹的五種簡單指導原則。若是你設法遵循它們的話,你的項目將會更好:框架
假設有以下的目錄結構:學習
// DON'T . ├── controllers | ├── product.js | └── user.js ├── models | ├── product.js | └── user.js ├── views | ├── product.hbs | └── user.hbs
這種方式的問題是:測試
要理解產品頁是如何工做的,就必須打開三個不一樣目錄,須要有大量上下文切換,ui
在 require 模塊時,要寫長路徑:require('../../controllers/user.js')
spa
要取代這種方式,你能夠圍繞產品功能/頁面/組件來組織 Node.js 應用程序結構。這樣作更容易理解一些:翻譯
// DO . ├── product | ├── index.js | ├── product.js | └── product.hbs ├── user | ├── index.js | ├── user.js | └── user.hbs
index.js
文件中只使用這些 index.js 文件輸出功能,好比:
// product/index.js var product = require('./product') module.exports = { create: product.create }
測試不單單是爲了檢查模塊是否產生預期的輸出,還用來文檔化你的模塊(在後續章節中會學到更多有關測試的內容)。所以,若是測試文件挨着實現文件放,會更容易理解。
將附加的測試文件放在一個單獨的 test
文件夾中,避免衝突。
. ├── test | └── setup.spec.js ├── product | ├── index.js | ├── product.js | ├── product.spec.js | └── product.hbs ├── user | ├── index.js | ├── user.js | ├── user.spec.js | └── user.hbs
config
目錄使用一個 config
目錄放配置文件。
. ├── config | ├── index.js | └── server.js ├── product | ├── index.js | ├── product.js | ├── product.spec.js | └── product.hbs
scripts
目錄爲 package.json 中的附加長腳本建立一個單獨的目錄。
. ├── scripts | ├── syncDb.sh | └── provision.sh ├── product | ├── index.js | ├── product.js | ├── product.spec.js | └── product.hbs
下章將學習如何使用 Passport.js 驗證用戶身份。