成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

【Node Hero】7. Node.js 項(xiàng)目結(jié)構(gòu)

張紅新 / 2478人閱讀

摘要:本教程會(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

相關(guān)文章

  • Node Hero】1. 開(kāi)始使用 Node.js

    摘要:使用一個(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...

    hqman 評(píng)論0 收藏0
  • Node Hero】8. 使用 Passport.js 進(jìn)行 Node.js 身份驗(yàn)證

    摘要:本文轉(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...

    CoderStudy 評(píng)論0 收藏0
  • Node Hero】6. Node.js Request 模塊

    摘要:狀態(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...

    BlackHole1 評(píng)論0 收藏0
  • Node Hero】4. 第一個(gè) Node.js HTTP 服務(wù)器

    摘要:本文轉(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...

    Coly 評(píng)論0 收藏0
  • Node Hero】3. 理解異步編程

    摘要:異步編程在傳統(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/ ...

    kevin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<