模塊化方式構建Node.js應用程序
如今,幾乎所有的Web服務或集成都是在Node.js運行時上完成的。Node.js是一個具有很多社區支持的靈活平臺。我們甚至可以直接從Node.js創建xlsx,docx或pdf文檔。所有主流雲平臺都可以使用Node.js作為其1級語言。
模塊化
Node.js通過設計,可以使用node_modules結構來實現模塊化。所有必需的模塊都存儲在node_modules目錄中,並且我們可以在代碼中的任何地方調用這些模塊。
而現在,我們將在應用程序代碼中使用這種模塊化的方式。我看到的大多數應用程序都包含一個lib文件夾,其中存儲了所有的JS文件。這些js文件使用相對路徑導入所需區域。
const db = require("../db/")
const logging = require ("../../logging")
這種方法的主要問題是當我們改變服務文件的路徑時,到DB的路徑也應該改變。此外,格式是不可讀的。我們將對文件的真實性感到困惑。
解決方案
一個更好的方法是將應用程序設計為模塊,例如DB,日誌記錄,錯誤等。假設你的應用程序名稱為cms,那麽使用scope可以更容易地表示模塊。
require("@cms/db")
你可以單獨開發模塊,並將它們發布到任何NPM服務器(公共/私有),並像任何其他模塊一樣使用它們。
如果你的應用程序需要日誌記錄模塊:
npm install --save @cms/logging
如果你不想將應用程序分成幾個部分,那麽還有另一種方法。
更優的方式
將所需的模塊保存在一個單獨的文件夾中。假設有“@cms”。為每個模塊使用單獨的文件夾,讓模塊有一個單獨的package.json。這樣就可以成為一個有效的Node模塊。
模塊的package.json將如下所示
{
"name": "@cms/db",
"version": "1.0.1",
"description": "db module for CMS Application",
"main": "index.js",
"dependencies":{
"mysql" : "latest"
}
}
模塊準備好了之後,就可以做一些腳本了。在“scripts”文件夾中添加install.js。
let fs = require(‘fs‘)
console.log(‘Creating symlinks ...‘)
if (fs.existsSync(‘node_modules/@cms‘)) {
console.log(‘link exists already ‘)
} else {
let source = ‘../@cms‘
console.log(`creating link for ${source}`)
fs.symlinkSync(source, ‘node_modules/@cms‘, ‘junction‘)
console.log(‘done‘)
}
將此腳本添加到main package.json。
{
"name": "CMSApplication",
"version": "1.0.1",
"description": "Sample CMS Application",
"main": "index.js",
"scripts": {
"install": "node scripts/install.js",
"start": "node index.js"
},
"dependencies":{
"express" : "latest"
}
}
每當你執行npm安裝時都會執行該腳本。因此,一旦所有其他節點模塊被定義並且依賴關系被安裝好了之後,它將創建從@cms文件夾外部到@cms文件夾內部node_modules的鏈接。所以你對外部@cms文件夾所做的任何更改都將反映到文件夾內部的node_modules。
你可以看到我們對@cms安裝了符號鏈接。這不是一個快捷文件,不是在Linux中使用“ln”創建的硬鏈接。
在@cms內部,你可以看到我們在外部@cms文件夾中定義的模塊。
這樣你就實現了模塊化。“@cms”文件夾是你源代碼的一部分。然後你可以按正常方式導入所需的模塊。
const {logger} = require("@cms/logging")
logger.info("Welcome to CMS Application")
當你希望應用程序執行時,運行“npm install”,然後運行“npm start”。
這種方法有助於使應用程序更加模塊化和可擴展。歡迎在評論中講述你的看法。
http://wfhuamei.com/
http://yong-elec.com/
http://tlwhcy.com/
http://ipumei.com/
http://qzcgyy.net/
http://cqtgzc.com/
http://myjjcn.com/
http://booioo.net/
http://gdlsly.com/
http://chinasstk.com/
http://metdmr.com/
http://syqixun.com/
http://shkuju.com/
http://rongju55.com/
http://yn698.com/
http://huabaoshicai.cn/
http://hshyin.com/
http://midea.ha.cn/
http://71cf.cn/
http://kmlbzs.com/
模塊化方式構建Node.js應用程序