Nämä ovat JavaScriptin kaksi moderni järjestelmää koodin jakamiseen useille tiedostoille.
ES Modules (ESM) — moderni standardi
// import / export, used in browsers and modern Node
import { sum } ;
defaultThing ;
x = ;
() {};
Nämä ovat JavaScriptin kaksi moderni järjestelmää koodin jakamiseen useille tiedostoille.
// import / export, used in browsers and modern Node
import { sum } ;
defaultThing ;
x = ;
() {};
const { sum } = require("./math");
module.exports = { x: 1 };
| ES Modules | CommonJS | |
|---|---|---|
| Syntaksi | import/export | require/module.exports |
| Lataus | staattinen, asynkroninen | dynaaminen, synkroninen |
| Analysoitavissa | ✅ → tree-shaking | ❌ vaikeampi |
| Sidokset | live (vain luku) | kopioitu arvo |
this huipulla | undefined | module.exports |
Staattinen tarkoittaa, että ESM-tuonti tunnetaan jäsentelyaikana, mikä antaa bundlereille mahdollisuuden tehdä tree-shaking (poista käyttämättömät viennit). CommonJS require on dynaaminen (voit ehdollisesti require), joten sitä ei voi analysoida yhtä helposti.
{ "type": "module" } // in package.json, or use the .mjs extension
Et voi require() ESM-ainoastaan pakettia CommonJS:stä; näiden kahden sekoittaminen on raskasta. ESM-tuonnit ovat myös live bindings — jos viejä muuttaa arvoa, tuojat näkevät uuden arvon (CJS antaa sinulle tilannekuvan kopion).
ESM on tulevaisuus (selaimen natiivia, tree-shakeable, huipputason await).
Suosi sitä uudelle koodille; ymmärrä CJS, koska suuri osa Node-ekosysteemistä käyttää sitä edelleen.
Kirjasto IT-haastattelukysymyksiä yksityiskohtaisine vastauksineen — Juniorista Senioriin.
Lahjoita