摘要:本教程會學習如何正確組織一個項目的結構,從而在應用程序開始增長時避免混亂。項目結構的五個基本規則組織項目有不少可能的方式并且每種已知的方式都有其興衰。過去在,我們有機會創建各種規模的高效應用程序,也獲得了大量關于項目結構注意事項的見解。
本文轉載自:眾成翻譯
譯者:網絡埋伏紀事
鏈接:http://www.zcfy.cc/article/1756
原文:https://blog.risingstack.com/node-hero-node-js-project-structure-tutorial/
大多數 Node.js 框架不會提供固定的目錄結構,并且從開始就做對可能就是一個挑戰。本教程會學習如何正確組織一個 Node.js 項目的結構,從而在應用程序開始增長時避免混亂。
Node.js 項目結構的五個基本規則組織 Node.js 項目有不少可能的方式 - 并且每種已知的方式都有其興衰。不過,根據我們的經驗,開發者總想實現同樣的事情:干凈的代碼,以及輕松添加新功能的可能性。
過去在 RisingStack,我們有機會創建各種規模的高效 Node 應用程序,也獲得了大量關于項目結構注意事項的見解。
我們總結出了我們在 Node.js 開發期間貫徹的五種簡單指導原則。如果你設法遵循它們的話,你的項目將會更好:
規則 1 - 圍繞著功能而不是角色來組織文件假設有如下的目錄結構:
// DON"T . ├── controllers | ├── product.js | └── user.js ├── models | ├── product.js | └── user.js ├── views | ├── product.hbs | └── user.hbs
這種方式的問題是:
要理解產品頁是如何工作的,就必須打開三個不同目錄,需要有大量上下文切換,
在 require 模塊時,要寫長路徑:require("../../controllers/user.js")
要取代這種方式,你可以圍繞產品功能/頁面/組件來組織 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 驗證用戶身份。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85139.html
摘要:使用一個事件驅動的非阻塞式的模型,讓它輕量而高效。也就是說提供了用編寫服務器的可能性,這種服務器具有令人難以置信的性能。正如官方聲明所說是一個使用與瀏覽器相同引擎的運行時。這意味著有兩個發布版本穩定版和試驗版。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1748原文:https://blog.risingstack.com/nod...
摘要:本文轉載自眾成翻譯譯者網絡埋伏紀事鏈接原文本教程中將學習如何使用和實現一個本地身份驗證策略。我們將有一個用戶頁,一個備注頁,和一些與身份驗證相關的功能。下一步下一章主要涉及應用程序的單元測試。你會學習單元測試測試金字塔測試替代等概念。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1755原文:https://blog.risings...
摘要:狀態碼描述了請求的結果,它對錯誤處理是必不可少的。響應還沒完成成功這些狀態碼表示請求被接收并正確處理了。服務器錯誤當服務器由于某些錯誤不能完成有效的請求時,就發送這些狀態碼。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1758原文:https://blog.risingstack.com/node-hero-node-js-req...
摘要:本文轉載自眾成翻譯譯者網絡埋伏紀事鏈接原文本章我會指導你啟動一個簡單的服務器,并開始為請求服務?,F在,我們開始創建第一個服務器我們將模塊,并將服務器綁定到端口來監聽。必須用如下方式啟動服務器總結本章學習了如何從頭開始創建第一個服務器。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1750原文:https://blog.risings...
摘要:異步編程在傳統編程實踐中,大多數操作都是同步發生的。中的異步編程異步是一種輸入輸出處理的形式,它允許在傳輸完成之前,其它處理能繼續進行。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1759原文:https://blog.risingstack.com/node-hero-async-programming-in-node-js/ ...
閱讀 2895·2021-11-17 09:33
閱讀 3674·2021-11-16 11:42
閱讀 3496·2021-10-26 09:50
閱讀 1346·2021-09-22 15:49
閱讀 3049·2021-08-10 09:44
閱讀 3680·2019-08-29 18:36
閱讀 3940·2019-08-29 16:43
閱讀 2229·2019-08-29 14:10