Node.js 的模組系統

Node.js 兩種模組機制

模組系統名稱來源
CommonJSrequireNode.js 原創
ES Modulesimport/exportECMAScript 標準

1️⃣ CommonJS(Node.js 傳統)

這是 Node.js 自己設計的模組系統。

// utils.js
function add(a, b) {
  return a + b;
}

module.exports = add;
// app.js
const add = require('./utils');
console.log(add(2, 3));

2️⃣ ES Modules(標準 JavaScript)

這是 ECMAScript 官方標準(瀏覽器與 Node.js 都支援)。

// utils.js
export function add(a, b) {
  return a + b;
}
import { add } from './utils.js';

CommonJS 及 ES Modules 的差異對比總覽

特性CommonJS (CJS)ES Modules (ESM)
載入語法require()import / import()
導出語法module.exports / exportsexport / export default
載入時機同步 (Sync)非同步 (Async)
檔案副檔名.js (預設), .cjs.mjs, .js (設定type為module)
適用範圍Node.js 舊環境Node.js 新環境 / 瀏覽器

如何切換至 ESM

在 package.json 文件中添加 "type": "module",即可將整個專案的 .js 檔案視為 ESM。 

購物車