Junior
Ako fungujú operátory import a export v JavaScripte?
sobes.tech AI
Odpoveď od AI
Operátory import a export sa používajú na prácu s modulmi v JavaScripte, umožňujúc rozdeľovanie kódu na nezávislé, opakovane použiteľné časti a správu závislostí medzi nimi.
export
Operátor export sa používa na export premenných, funkcií, tried alebo iných hodnôt z modulu. Export môže byť pomenovaný alebo predvolený.
Pomenovaný export:
// module.js
export const myVariable = 10;
export function myFunction() { // ... }
export class MyClass { // ... }
Predvolený export: v module môže byť len jeden predvolený export.
// module.js
const defaultValue = 'default value';
export default defaultValue;
import
Operátor import sa používa na import hodnôt, ktoré boli exportované inými modulmi.
Pomenovaný import:
// another-module.js
import { myVariable, myFunction } from './module.js';
Import s iným menom:
// another-module.js
import { myVariable as newVariableName } from './module.js';
Import všetkých pomenovaných exportov ako objekt:
// another-module.js
import * as moduleAlias from './module.js';
// Prístup: moduleAlias.myVariable, moduleAlias.myFunction
Import predvoleného exportu:
// another-module.js
import defaultValueName from './module.js';
Import pomenovaného aj predvoleného exportu naraz:
// another-module.js
import defaultValueName, { myVariable, myFunction } from './module.js';
Princípy práce:
- Statická analýza: JavaScriptový engine analyzuje operátory
importaexportpočas kompilácie (pred vykonaním kódu), vytvárajúci graf závislostí medzi modulmi. - "Živé" väzby: Importované premenné nie sú kópiami hodnôt z exportujúceho modulu. Sú to "živé" väzby (živé odkazy) na premenné z pôvodného modulu. Ak sa hodnota premennej v exportujúcom module zmení, táto zmena bude viditeľná cez importovanú väzbu.
- Jednorazové vykonanie: Kód každého modulu sa vykoná iba raz pri prvom importe tohto modulu. Výsledky exportu sa cache-ujú a používajú pri ďalších importoch.
- Použitie v kontexte: Moduly sa vykonávajú v ich vlastnom kontexte, izolovanom od globálneho prostredia. Premenné deklarované v koreňovej časti modulu nezaťažujú globálny priestor mien, ak nie sú explicitne exportované.