Hizi ni mifumo miwili ya moduli ya JavaScript kwa kugawanya msimbo katika faili nyingi.
ES Modules (ESM) — kiwango kisichodiwa
// import / export, used in browsers and modern Node
import { sum } from "./math.js";
defaultThing ;
x = ;
() {};
Hizi ni mifumo miwili ya moduli ya JavaScript kwa kugawanya msimbo katika faili nyingi.
// 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 | |
|---|---|---|
| Sintaksia | import/export | require/module.exports |
| Kupakia | tuli, asinkroni | kina, sinkroni |
| Inaweza kuchambuliwa | ✅ → tree-shaking | ❌ ngumu zaidi |
| Viungo | hai (soma tu) | thamani iliyonakiliwa |
this juu | undefined | module.exports |
Tuli inamaanisha kuwa uingizaji wa ESM unajulikana wakati wa parse, ambayo inaruhusu bundlers kufanya tree-shaking (ondoa uwasilisho usiotumika). CommonJS require ni kina (unaweza require kwa masharti), kwa hiyo haiwezi kuchambuliwa kwa urahisi.
{ "type": "module" } // in package.json, or use the .mjs extension
Huwezi require() pakiti ya ESM-pekee kutoka CommonJS; kuchanganya hizo mbili kuna matatizo. ESM imports pia ni viungo hai — ikiwa mwasilisaji anabadilisha thamani, wanouingiza huona thamani mpya (CJS inakupa nakili ya snapshot).
ESM ni sababu ya baadaye (asilia ya kivinjari, inaweza kutumia tree-shaking, await kwa kiwango cha juu).
Pendekeza kwa msimbo mpya; elewa CJS kwa sababu sehemu kubwa ya kawaida ya Node bado inatumia hiyo.