Jedná se o dva moduly JavaScriptu pro rozdělení kódu do více souborů.
ES Modules (ESM) — moderní standard
// import / export, used in browsers and modern Node
import { sum } from ;
defaultThing ;
x = ;
() {};
Jedná se o dva moduly JavaScriptu pro rozdělení kódu do více souborů.
// import / export, used in browsers and modern Node
import { sum } from ;
defaultThing ;
x = ;
() {};
const { sum } = require("./math");
module.exports = { x: 1 };
| ES Modules | CommonJS | |
|---|---|---|
| Syntaxe | import/export | require/module.exports |
| Načítání | statické, asynchronní | dynamické, synchronní |
| Analyzovatelné | ✅ → tree-shaking | ❌ obtížnější |
| Vazby | živé (pouze čtení) | zkopírovaná hodnota |
this na vrcholu | undefined | module.exports |
Statické znamená, že importy ESM jsou známy v čase parsování, což umožňuje bundlérům provádět tree-shaking (odstranit nepoužívané exporty). CommonJS require je dynamický (můžete podmíněně require), takže se nedá tak snadno analyzovat.
{ "type": "module" } // in package.json, or use the .mjs extension
Nelze require() balíček pouze ESM z CommonJS; míchání těchto dvou má nevyřešené problémy. Importy ESM jsou také živé vazby — pokud exportér změní hodnotu, importéři vidí novou hodnotu (CJS vám dá kopii snímku).
ESM je budoucnost (nativní pro prohlížeč, tree-shakeable, await na nejvyšší úrovni).
Volte ji pro nový kód; pochopte CJS, protože velká část ekosystému Node ji stále používá.
Knihovna IT otázek k pohovoru s podrobnými odpověďmi — od Junior po Senior.
Přispět