ეს ორი მოდულის სისტემაა JavaScript-ში კოდის მრავალ ფailებად გამოყოფისთვის.
ES მოდულები (ESM) — თანამედროვე სტანდარტი
js
// import / export, used in browsers and modern Node
import { sum } from "./math.js";
defaultThing ;
x = ;
() {};
ეს ორი მოდულის სისტემაა JavaScript-ში კოდის მრავალ ფailებად გამოყოფისთვის.
// import / export, used in browsers and modern Node
import { sum } from "./math.js";
defaultThing ;
x = ;
() {};
const { sum } = require("./math");
module.exports = { x: 1 };
| ES მოდულები | CommonJS | |
|---|---|---|
| სინტაქსი | import/export | require/module.exports |
| ჩამოტვირთვა | static, async | დინამიური, სინქრონული |
| ანალიზირებადი | ✅ → tree-shaking | ❌ უფრო რთული |
| შეკვრები | live (მხოლოდ წაკითხვা) | კოპირებული მნიშვნელობა |
this წვერზე | undefined | module.exports |
Static ნიშნავს, რომ ESM imports ცნობილია parse დროს, რაც საშუალებას აძლევს bundler-ებს tree-shaking გააკეთონ (ამოშალონ გამოუყენებელი exports). CommonJS require დინამიურია (შეგიძლიათ require პირობითად), ამიტომ მისი ანალიზი უფრო რთულია.
{ "type": "module" } // in package.json, or use the .mjs extension
ვერ შეგიძლიათ require() გამოიყენოთ ESM-only პაკეტზე CommonJS-დან; ორის შერევას აქვს რთული მხარეები. ESM imports ასევე live bindings-ია — თუ exporter-ი შეცვლის მნიშვნელობას, importers-ები ხედავენ ახალ მნიშვნელობას (CJS გვაძლევს snapshot-ის კოპიას).
ESM არის მომავალი (browser-native, tree-shakeable, top-level await).
ამჯობინეთ ახალი კოდისთვის; გაუმეორებელი CJS, რადგან Node-ის ეკოსისტემის დიდი ნაწილი ასჯერ იყენებს მას.