Middle
Kako funkcionišu moduli u ES Modules?
sobes.tech АИ
Одговор од АИ
Moduli u ES Modules rade na osnovu statičke analize uvoza i izvoza. Pregledač ili okruženje za izvršavanje parsira JavaScript fajlove, određuje zavisnosti između modula pre izvršavanja koda i kreira graf zavisnosti.
Principi rada:
- Statička analiza: Uvozi i izvozi se određuju pre izvršavanja koda, što omogućava optimizaciju učitavanja i rano otkrivanje grešaka.
- Jednoznačno povezivanje: Svaki uvoz je povezan sa određenim izvozom u drugom modulu.
- Jedinstveni primerak: Modul se izvršava samo jednom pri prvom uvozu. Svi naredni uvozi dobijaju referencu na isti primerak.
Životni ciklus modula:
- Konstrukcija: Izvorni kod modula se parsira, identifikuju se uvozi i izvozi. Kreira se omotač modula.
- Učitavanje: Učitavaju se svi uvozni moduli. Ako zavisnost nije keširana, vrši se zahtev prema mreži ili fajl sistemu.
- Povezivanje: Uvozi i izvozi se povezuju. Promenljive i funkcije iz uvođenih modula postaju dostupne za korišćenje. Ako uvoz ne može biti rešen, baca se greška.
- Izvršavanje: Kod modula se izvršava. Sve izvođene vrednosti postaju dostupne za module koji ih uvoze.
Primeri:
// moduleA.js
export const name = 'Alice';
export function sayHello() {
console.log(`Hello, ${name}!`);
}
// moduleB.js
import { name, sayHello } from './moduleA.js';
console.log(name); // Izlaz: Alice
sayHello(); // Izlaz: Hello, Alice!
Razlike od CommonJS:
| Osobina | ES Modules | CommonJS |
|---|---|---|
| Povezivanje | Statičko | Dinamičko |
| Učitavanje | Asinhrono (u pretraživaču) | Sinhrono (po defaultu) |
| Izvoz | export ključna reč |
module.exports |
| Uvoz | import ključna reč |
require funkcija |
| Upotreba | U pretraživaču i Node.js (eksperimentalno) | U Node.js-u |