Junior
Jak fungují operátory import a export v JavaScriptu?
sobes.tech AI
Odpověď od AI
Operátory import a export se používají v JavaScriptu pro práci s moduly, umožňující rozdělení kódu na nezávislé, znovu použitelné části a správu závislostí mezi nimi.
export
Operátor export se používá k exportu proměnných, funkcí, tříd nebo jiných hodnot z modulu. Export může být pojmenovaný nebo výchozí.
Pojmenovaný export:
// module.js
export const myVariable = 10;
export function myFunction() { // ... }
export class MyClass { // ... }
Výchozí export: v modulu může být pouze jeden výchozí export.
// module.js
const defaultValue = 'default value';
export default defaultValue;
import
Operátor import se používá k importu hodnot exportovaných jinými moduly.
Pojmenovaný import:
// another-module.js
import { myVariable, myFunction } from './module.js';
Import s jiným názvem:
// another-module.js
import { myVariable as newVariableName } from './module.js';
Import všech pojmenovaných exportů jako objekt:
// another-module.js
import * as moduleAlias from './module.js';
// Přístup: moduleAlias.myVariable, moduleAlias.myFunction
Import výchozího exportu:
// another-module.js
import defaultValueName from './module.js';
Importovat současně pojmenovaný a výchozí export:
// another-module.js
import defaultValueName, { myVariable, myFunction } from './module.js';
Principy fungování:
- Statická analýza: JavaScriptový engine analyzuje operátory
importaexportběhem kompilace (před spuštěním kódu) a vytváří graf závislostí mezi moduly. - "Živé" vazby: Importované proměnné nejsou kopiemi hodnot z exportujícího modulu. Jsou "živé" vazby (živé odkazy) na proměnné z původního modulu. Pokud se hodnota proměnné v exportujícím modulu změní, tato změna bude viditelná přes importovanou vazbu.
- Jednorázové provedení: Kód každého modulu se spouští pouze jednou při prvním importu tohoto modulu. Výsledky exportu jsou ukládány do cache a používají se při následných importech.
- Použití v kontextu: Moduly se spouštějí ve vlastním kontextu, izolovaném od globálního prostoru. Proměnné deklarované na kořenové úrovni modulu neznečišťují globální prostor, pokud nejsou výslovně exportovány.