Node JS 中的 module.exports

Isaac Tony 2023年10月12日
  1. 在 Node JS 中使用模組
  2. 在 Node JS 中使用第三方模組
  3. 在 Node JS 中使用本地模組
  4. 在 Node JS 中使用 module.experts
Node JS 中的 module.exports

在 Node js 中,module.export 在伺服器端公開模組,並按照 CommonJS 格式提供。

Node js 模組可以被稱為包含 javascript 物件和函式的預構建程式碼包,並且可以被外部應用程式使用。

在 Node JS 中使用模組

模組是編寫程式的重要組成部分,因為它們通過允許我們重用程式碼除錯易於理解管理複雜的應用程式,使我們作為開發人員的生活變得輕鬆。

Node js 中有三種型別的模組;那些本質上隨 Node js 安裝而來的模組被稱為 Core 模組。這些模組很容易在我們的程式中使用,因為我們只需要訪問它們的功能。

一個典型的例子是 HTTP 模組。

const http = require('http');

在 Node JS 中使用第三方模組

我們也有第三方模組,在我們的程式中使用它們之前需要安裝它們。這些模組通常使用 npm 包安裝。

此類模組的典型示例是 express 包。安裝後,這些包將作為依賴項新增到 package.json 檔案下。

然後我們可以使用 require 關鍵字將它們匯入我們的程式。

npm install express
const express = require('express');

在 Node JS 中使用本地模組

最後,我們還有 local 模組。顧名思義,這些是我們自己建立的用於執行各種操作的模組。

與前兩種型別的模組不同,這些模組需要我們首先匯出它們以使其可用,然後將它們匯入到我們打算實現它們的程式中。

伺服器端有兩個廣泛使用的匯出和匯入模組,尤其是 Node js。這些是 CommonJS 和 ESM 格式。

CommonJS 格式允許我們在不同的 Node js 檔案中的獨特上下文中建立模組。

符合這種格式的模組可以稱為 CommonJs 模組,在這種格式下,我們使用 module.exports 物件來公開一個模組,並使用預設的 require 關鍵字將它們匯入程式。

另一方面,ESM 格式使用 export 關鍵字來 export 模組,並使用 import 關鍵字根據 ES6 語法匯入它們。

在 Node JS 中使用 module.experts

使用 module.exports,我們可以匯出 literalsfunctionsclassesobjectskeyword 模組代表 current 模組,而關鍵字 export 將任何物件公開為一個模組。

我們可以通過簡單地將它們分配給 module.exports 來將它們作為模組匯出。這是因為匯出本身就是一個物件,因此分配給它的任何文字都將作為模組匯出。

在下面的示例中,我們建立了一個 Node js 應用程式,我們的主檔案是 index.jsdescription.js 包含我們要匯出為模組的文字。

使用包含文字的 description.js

let tesla = 'Largest electric car manufacturer';

module.exports = tesla;

使用 index.js 作為我們的主檔案。

var desc_tesla = require('./description.js');

console.log(desc_tesla);

輸出:

Largest electric car manufacturer

在上面的 Node 應用程式中,我們匯出了一個 String literal 並通過指定 description.js 所在的根目錄的路徑將其匯入 index.js

我們也可以將函式匯出為模組,只需建立一個函式,就像我們通常在 javascript 中所做的那樣,然後將函式的名稱分配給 module.exports

現在模組系統知道我們想要將該函式作為模組公開,我們可以通過在 index.js 檔案中簡單地要求它來訪問它,如下所示。

使用包含文字的 description.js

function factorial(n) {
  if ((n == 0) || (n === 1)) {
    return 1;
  } else {
    return (n * factorial(n - 1));
  }
}

module.exports = factorial;

使用 index.js 作為我們的主檔案。

var factorial = require('./description.js');

console.log(factorial(7));

輸出:

5040

同樣,我們可以將物件匯出為模組。物件是具有屬性和型別的獨立實體。

我們可以將物件分配給 module.exports 或將物件名稱分配給 module.exports。一旦我們暴露了物件,我們就可以使用下面的 require() 方法在我們想要的位置訪問它。

使用包含文字的 description.js

const car = {
  make: 'Tesla',
  model: 'S plaid',
  top_speed: '200mph',
  year: 2019
}

            module.exports = car;

使用 index.js 作為我們的主檔案。

var car = require('./description.js');

console.log(car.make);
console.log(car.model);
console.log(car.top_speed);

輸出:

Tesla
S plaid
200mph

一旦我們將物件匯入 index.js,我們就可以使用點符號訪問物件的屬性。

在上面的示例中,我們一直在使用 ./description.js 匯入模組,其中 ./ 指定 description.js 位於根資料夾中。

但是,情況可能並非總是如此;在某些情況下,模組可能位於不同的資料夾中。我們需要指定匯入此類模組的絕對位置,這些模組以 ./ 開頭,指向根資料夾。

作者: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn