【Node Hero】7. Node.js 項目結構

本文轉載自:衆成翻譯
譯者:網絡埋伏紀事
連接: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 項目結構的五個基本規則

組織 Node.js 項目有很多可能的方式 - 而且每種已知的方式都有其興衰。不過,根據咱們的經驗,開發者總想實現一樣的事情:乾淨的代碼,以及輕鬆添加新功能的可能性。json

過去在 RisingStack,咱們有機會建立各類規模的高效 Node 應用程序,也得到了大量關於項目結構注意事項的看法。網絡

咱們總結出了咱們在 Node.js 開發期間貫徹的五種簡單指導原則。若是你設法遵循它們的話,你的項目將會更好:框架

規則 1 - 圍繞着功能而不是角色來組織文件

假設有以下的目錄結構:學習

// 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

規則 2 - 不要把邏輯放在 index.js 文件中

只使用這些 index.js 文件輸出功能,好比:

// product/index.js
var product = require('./product')

module.exports = {  
  create: product.create
}

規則 3 - 測試文件挨着實現文件

測試不單單是爲了檢查模塊是否產生預期的輸出,還用來文檔化你的模塊(在後續章節中會學到更多有關測試的內容)。所以,若是測試文件挨着實現文件放,會更容易理解。

將附加的測試文件放在一個單獨的 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

規則 4 - 使用 config 目錄

使用一個 config 目錄放配置文件。

.
├── config
|   ├── index.js
|   └── server.js
├── product
|   ├── index.js
|   ├── product.js
|   ├── product.spec.js
|   └── product.hbs

規則 5 - 將長 npm 腳本放進 scripts 目錄

爲 package.json 中的附加長腳本建立一個單獨的目錄。

.
├── scripts
|   ├── syncDb.sh
|   └── provision.sh
├── product
|   ├── index.js
|   ├── product.js
|   ├── product.spec.js
|   └── product.hbs

下一步

下章將學習如何使用 Passport.js 驗證用戶身份

圖片描述

相關文章
相關標籤/搜索