摘要:本教程會(huì)學(xué)習(xí)如何正確組織一個(gè)項(xiàng)目的結(jié)構(gòu),從而在應(yīng)用程序開(kāi)始增長(zhǎng)時(shí)避免混亂。項(xiàng)目結(jié)構(gòu)的五個(gè)基本規(guī)則組織項(xiàng)目有不少可能的方式并且每種已知的方式都有其興衰。過(guò)去在,我們有機(jī)會(huì)創(chuàng)建各種規(guī)模的高效應(yīng)用程序,也獲得了大量關(guān)于項(xiàng)目結(jié)構(gòu)注意事項(xiàng)的見(jiàn)解。
本文轉(zhuǎn)載自:眾成翻譯
譯者:網(wǎng)絡(luò)埋伏紀(jì)事
鏈接:http://www.zcfy.cc/article/1756
原文:https://blog.risingstack.com/node-hero-node-js-project-structure-tutorial/
大多數(shù) Node.js 框架不會(huì)提供固定的目錄結(jié)構(gòu),并且從開(kāi)始就做對(duì)可能就是一個(gè)挑戰(zhàn)。本教程會(huì)學(xué)習(xí)如何正確組織一個(gè) Node.js 項(xiàng)目的結(jié)構(gòu),從而在應(yīng)用程序開(kāi)始增長(zhǎng)時(shí)避免混亂。
Node.js 項(xiàng)目結(jié)構(gòu)的五個(gè)基本規(guī)則組織 Node.js 項(xiàng)目有不少可能的方式 - 并且每種已知的方式都有其興衰。不過(guò),根據(jù)我們的經(jīng)驗(yàn),開(kāi)發(fā)者總想實(shí)現(xiàn)同樣的事情:干凈的代碼,以及輕松添加新功能的可能性。
過(guò)去在 RisingStack,我們有機(jī)會(huì)創(chuàng)建各種規(guī)模的高效 Node 應(yīng)用程序,也獲得了大量關(guān)于項(xiàng)目結(jié)構(gòu)注意事項(xiàng)的見(jiàn)解。
我們總結(jié)出了我們?cè)?Node.js 開(kāi)發(fā)期間貫徹的五種簡(jiǎn)單指導(dǎo)原則。如果你設(shè)法遵循它們的話,你的項(xiàng)目將會(huì)更好:
規(guī)則 1 - 圍繞著功能而不是角色來(lái)組織文件假設(shè)有如下的目錄結(jié)構(gòu):
// DON"T . ├── controllers | ├── product.js | └── user.js ├── models | ├── product.js | └── user.js ├── views | ├── product.hbs | └── user.hbs
這種方式的問(wèn)題是:
要理解產(chǎn)品頁(yè)是如何工作的,就必須打開(kāi)三個(gè)不同目錄,需要有大量上下文切換,
在 require 模塊時(shí),要寫(xiě)長(zhǎng)路徑:require("../../controllers/user.js")
要取代這種方式,你可以圍繞產(chǎn)品功能/頁(yè)面/組件來(lái)組織 Node.js 應(yīng)用程序結(jié)構(gòu)。這樣做更容易理解一些:
// DO . ├── product | ├── index.js | ├── product.js | └── product.hbs ├── user | ├── index.js | ├── user.js | └── user.hbs規(guī)則 2 - 不要把邏輯放在 index.js 文件中
只使用這些 index.js 文件輸出功能,比如:
// product/index.js var product = require("./product") module.exports = { create: product.create }規(guī)則 3 - 測(cè)試文件挨著實(shí)現(xiàn)文件
測(cè)試不僅僅是為了檢查模塊是否產(chǎn)生預(yù)期的輸出,還用來(lái)文檔化你的模塊(在后續(xù)章節(jié)中會(huì)學(xué)到更多有關(guān)測(cè)試的內(nèi)容)。因此,如果測(cè)試文件挨著實(shí)現(xiàn)文件放,會(huì)更容易理解。
將附加的測(cè)試文件放在一個(gè)多帶帶的 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規(guī)則 4 - 使用 config 目錄
使用一個(gè) config 目錄放配置文件。
. ├── config | ├── index.js | └── server.js ├── product | ├── index.js | ├── product.js | ├── product.spec.js | └── product.hbs規(guī)則 5 - 將長(zhǎng) npm 腳本放進(jìn) scripts 目錄
為 package.json 中的附加長(zhǎng)腳本創(chuàng)建一個(gè)多帶帶的目錄。
. ├── scripts | ├── syncDb.sh | └── provision.sh ├── product | ├── index.js | ├── product.js | ├── product.spec.js | └── product.hbs下一步
下章將學(xué)習(xí)如何使用 Passport.js 驗(yàn)證用戶身份。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85139.html
摘要:使用一個(gè)事件驅(qū)動(dòng)的非阻塞式的模型,讓它輕量而高效。也就是說(shuō)提供了用編寫(xiě)服務(wù)器的可能性,這種服務(wù)器具有令人難以置信的性能。正如官方聲明所說(shuō)是一個(gè)使用與瀏覽器相同引擎的運(yùn)行時(shí)。這意味著有兩個(gè)發(fā)布版本穩(wěn)定版和試驗(yàn)版。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1748原文:https://blog.risingstack.com/nod...
摘要:本文轉(zhuǎn)載自眾成翻譯譯者網(wǎng)絡(luò)埋伏紀(jì)事鏈接原文本教程中將學(xué)習(xí)如何使用和實(shí)現(xiàn)一個(gè)本地身份驗(yàn)證策略。我們將有一個(gè)用戶頁(yè),一個(gè)備注頁(yè),和一些與身份驗(yàn)證相關(guān)的功能。下一步下一章主要涉及應(yīng)用程序的單元測(cè)試。你會(huì)學(xué)習(xí)單元測(cè)試測(cè)試金字塔測(cè)試替代等概念。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1755原文:https://blog.risings...
摘要:狀態(tài)碼描述了請(qǐng)求的結(jié)果,它對(duì)錯(cuò)誤處理是必不可少的。響應(yīng)還沒(méi)完成成功這些狀態(tài)碼表示請(qǐng)求被接收并正確處理了。服務(wù)器錯(cuò)誤當(dāng)服務(wù)器由于某些錯(cuò)誤不能完成有效的請(qǐng)求時(shí),就發(fā)送這些狀態(tài)碼。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1758原文:https://blog.risingstack.com/node-hero-node-js-req...
摘要:本文轉(zhuǎn)載自眾成翻譯譯者網(wǎng)絡(luò)埋伏紀(jì)事鏈接原文本章我會(huì)指導(dǎo)你啟動(dòng)一個(gè)簡(jiǎn)單的服務(wù)器,并開(kāi)始為請(qǐng)求服務(wù)?,F(xiàn)在,我們開(kāi)始創(chuàng)建第一個(gè)服務(wù)器我們將模塊,并將服務(wù)器綁定到端口來(lái)監(jiān)聽(tīng)。必須用如下方式啟動(dòng)服務(wù)器總結(jié)本章學(xué)習(xí)了如何從頭開(kāi)始創(chuàng)建第一個(gè)服務(wù)器。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1750原文:https://blog.risings...
摘要:異步編程在傳統(tǒng)編程實(shí)踐中,大多數(shù)操作都是同步發(fā)生的。中的異步編程異步是一種輸入輸出處理的形式,它允許在傳輸完成之前,其它處理能繼續(xù)進(jìn)行。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1759原文:https://blog.risingstack.com/node-hero-async-programming-in-node-js/ ...
閱讀 2900·2021-11-17 09:33
閱讀 3683·2021-11-16 11:42
閱讀 3504·2021-10-26 09:50
閱讀 1359·2021-09-22 15:49
閱讀 3055·2021-08-10 09:44
閱讀 3692·2019-08-29 18:36
閱讀 3948·2019-08-29 16:43
閱讀 2233·2019-08-29 14:10