Module System trong Node.js (CommonJS & ES Module)

Bài 4 – Hệ thống module trong Node.js với CommonJS và ES Module.

20/11/2025 DaiPhan
Bài 4 / 6

Module System trong Node.js (CommonJS & ES Module)

Node.js hỗ trợ hai cơ chế module: CommonJS (cũ, truyền thống) và ES Module (hiện đại, chuẩn ECMAScript). Việc hiểu rõ cách hoạt động của từng loại giúp bạn tổ chức dự án linh hoạt, tương thích tốt với hệ sinh thái JavaScript.

1. Nội dung chính

  • Module là gì và vai trò trong Node.js
  • CommonJS: requiremodule.exports
  • ES Module: importexport
  • Cách kích hoạt ES Module trong Node.js
  • So sánh khi nào sử dụng CommonJS hoặc ES Module trong thực tế dự án

2. Ví dụ

CommonJS

// main.js
const math = require('./math');

console.log(math.sum(2, 3));

// math.js
module.exports = {
  sum(a, b) {
    return a + b;
  }
};

ES Module

// package.json cần:
// { "type": "module" }

// main.js
import { sum } from './math.js';

console.log(sum(2, 3));

// math.js
export function sum(a, b) {
  return a + b;
}

3. Kiến thức trọng tâm

  • CommonJS (CJS) là cơ chế module mặc định và lâu đời của Node.js
  • ES Module (ESM) là chuẩn hiện đại, tương thích tốt với frontend và bundler
  • Để dùng ESM trong Node.js, bạn cần thêm "type": "module" trong package.json hoặc dùng đuôi .mjs

4. Bài tập nhanh

  1. Tạo hai file module theo CommonJS và import chúng bằng require

  2. Chuyển toàn bộ project nhỏ sang ES Module và chạy thử

  3. Viết một module chứa nhiều hàm và export theo cả CJS và ESM để so sánh:

// math-utils.js (CommonJS)
function add(a, b) { return a + b; }
function multiply(a, b) { return a * b; }

module.exports = { add, multiply };

// math-utils.js (ES Module)
export function add(a, b) { return a + b; }
export function multiply(a, b) { return a * b; }

5. Kết luận

Module system giúp tổ chức mã nguồn rõ ràng và dễ bảo trì. Nắm vững cả CommonJS và ES Module giúp bạn linh hoạt trong các dự án Node.js, đặc biệt khi tích hợp với frontend hoặc công cụ build hiện đại.