© 2026 Laravel

JS Modules: ESM vs CommonJS

2 phút đọc 15 lượt xem
#javascript #modules #esm #commonjs

Mục lục bài viết

Sử dụng các mục để điều hướng nhanh

#1. CommonJS (CJS)

  • Đặc trưng: Dùng require()module.exports.
  • Môi trường: Truyền thống của Node.js.
  • Tính chất: Đồng bộ (Synchronous).

#2. ESM (ECMAScript Modules)

  • Đặc trưng: Dùng importexport.
  • Môi trường: Chuẩn của trình duyệt và Node.js hiện đại.
  • Tính chất: Bất đồng bộ (Asynchronous), hỗ trợ Tree-shaking tốt hơn.

#3. Tại sao lại xung đột?

JS phát triển mà không có hệ thống module chính thức. CJS ra đời từ cộng đồng Node.js, trong khi ESM là chuẩn ngôn ngữ.

#4. Quizz Senior

Q: “Tại sao ESM tốt hơn cho Tree-shaking?” A: Vì ESM có cấu trúc tĩnh (Static Structure). Công cụ build (Webpack/Vite) có thể phân tích code mà không cần thực thi, từ đó xóa sạch những code không dùng đến. CJS thì phải thực thi code mới biết module đó export cái gì, làm việc tree-shaking trở nên cực khó.

Bài viết liên quan