To sta dva modula JavaScript za razdelitev kode med datoteke.
Zakaj je to pomembno
// import / export, used in browsers and modern Node
import { sum } from "./math.js";
defaultThing ;
x = ;
() {};
To sta dva modula JavaScript za razdelitev kode med datoteke.
// import / export, used in browsers and modern Node
import { sum } from "./math.js";
defaultThing ;
x = ;
() {};
const { sum } = require("./math");
module.exports = { x: 1 };
| ES Modules | CommonJS | |
|---|---|---|
| Sintaksa | import/export | require/module.exports |
| Nalaganje | statično, asinkrono | dinamično, sinkrono |
| Analizljivo | ✅ → tree-shaking | ❌ težje |
| Bindings | live (samo branje) | kopirana vrednost |
this na vrhu | undefined | module.exports |
Statično pomeni, da so ESM uvozi znani v času razčlenjevanja, kar omogoča bundlerjem tree-shaking (odstranjevanje neuporabljenih izvozov). CommonJS require je dinamičen (lahko pogojno require), zato ga ni mogoče analizirati tako enostavno.
{ "type": "module" } // in package.json, or use the .mjs extension
Ne morete require() paketa samo ESM iz CommonJS; mešanje obeh ima ostre robove. ESM uvozi so tudi live bindings — če izvoznik spremeni vrednost, uvozniki vidijo novo vrednost (CJS vam daje kopijo snapshota).
ESM je prihodnost (nativen v brskalniku, tree-shakeable, top-level await).
Ga imejte raje za novo kodo; razumite CJS, ker ga večji del ekosistema Node še vedno uporablja.
Knjižnica IT vprašanj za razgovore s podrobnimi odgovori — od začetnika do izkušenega.
Doniraj