Sobes.tech
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:

  1. Statická analýza: JavaScriptový engine analyzuje operátory import a export počas kompilácie (pred vykonaním kódu), vytvárajúci graf závislostí medzi modulmi.
  2. "Ž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.
  3. 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.
  4. 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é.