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

  1. Statická analýza: JavaScriptový engine analyzuje operátory import a export během kompilace (před spuštěním kódu) a vytváří graf závislostí mezi moduly.
  2. "Ž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.
  3. 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.
  4. 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.