模組化方式構建Node.js應用程式

2017-10-31    分類:WEB開發、程式設計開發、首頁精華0人評論發表於2017-10-31

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

如今,幾乎所有的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://www.codeceo.com/article/build-nodejs-app-modular-way.html
英文原文:Build Your Node.js Application in a Modular Way
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章