模組系統 (Module System)#
模組(Module)是 Node.js 組織程式碼的基本單位。每個 .js 檔案都是一個獨立的模組,可以匯出(export)自己的功能,也可以匯入(import)其他模組的功能,讓程式碼更容易維護與重用。
Node.js 支援兩種模組系統:CommonJS(傳統)與 ESM(ECMAScript Modules)(現代)。
1. CommonJS(CJS)#
CommonJS 是 Node.js 最早使用的模組系統,使用 require() 匯入、module.exports 匯出。
匯出#
建立 math.js:
| |
匯入#
建立 main.js:
| |
也可以用解構賦值直接取出需要的函數:
| |
2. ESM(ECMAScript Modules)#
ESM 是現代 JavaScript 的標準模組系統,使用 import / export 語法。
要在 Node.js 使用 ESM,有兩種方式:
- 將檔案副檔名改為
.mjs - 在
package.json加入"type": "module"
匯出#
建立 math.mjs:
| |
匯入#
建立 main.mjs:
| |
3. 預設匯出(Default Export)#
每個模組可以有一個預設匯出,匯入時可自訂名稱。
| |
| |
4. CJS vs ESM 比較#
| 特性 | CommonJS (CJS) | ESM |
|---|---|---|
| 語法 | require / module.exports | import / export |
| 載入時機 | 執行期(動態) | 解析期(靜態) |
| 副檔名 | .js | .mjs 或設定 "type": "module" |
| 適用場景 | 舊版 Node.js 專案 | 現代專案推薦 |