Middle
Jak fungují moduly v ES Modules?
sobes.tech AI
Odpověď od AI
Moduly v ES Modules fungují na základě statické analýzy importů a exportů. Prohlížeč nebo prostředí spouštění analyzuje soubory JavaScript, určuje závislosti mezi moduly před spuštěním kódu a vytváří graf závislostí.
Principy fungování:
- Statická analýza: Importy a exporty jsou určeny před spuštěním kódu, což umožňuje optimalizovat načítání a odhalovat chyby v raných fázích.
- Jednoznačné spojení: Každý import je spojen s konkrétním exportem v jiném modulu.
- Jednotná instance: Modul se spouští pouze jednou při prvním importu. Všechny následující importy odkazují na stejnou instanci.
Životní cyklus modulu:
- Konstrukce: Zdrojový kód modulu je analyzován, identifikují se importy a exporty. Vytváří se obal modulu.
- Načítání: Načtou se všechny importované moduly. Pokud závislost není v cache, provede se požadavek na síť nebo souborový systém.
- Spojení: Importy a exporty jsou spojeny. Proměnné a funkce z importovaných modulů jsou zpřístupněny k použití. Pokud nelze import vyřešit, je vyvolána chyba.
- Spuštění: Kód modulu je spuštěn. Všechny exportované hodnoty jsou dostupné pro importující moduly.
Příklady:
// moduleA.js
export const name = 'Alice';
export function sayHello() {
console.log(`Hello, ${name}!`);
}
// moduleB.js
import { name, sayHello } from './moduleA.js';
console.log(name); // Výstup: Alice
sayHello(); // Výstup: Hello, Alice!
Rozdíly od CommonJS:
| Vlastnost | ES Modules | CommonJS |
|---|---|---|
| Spojení | Statické | Dynamické |
| Načítání | Asynchronní (v prohlížeči) | Synchronní (výchozí) |
| Exportování | klíčové slovo export |
module.exports |
| Importování | klíčové slovo import |
require funkce |
| Použití | V prohlížeči a Node.js (experimentální) | V Node.js |