Sobes.tech
Junior

Kako funkcionišu operatori import i export u JavaScript-u?

sobes.tech АИ

Одговор од АИ

Оператори import и export се користе за рад са модулима у JavaScript-у, омогућавајући раздвајање кода на независне, вишекратно коришћене делове и управљање зависностима између њих.

export

Оператор export се користи за извоз променљивих, функција, класа или других вредности из модула. Извоз може бити именован или подразумевани.

Именовани извоз:

// module.js
export const myVariable = 10;
export function myFunction() { // ... }
export class MyClass { // ... }

Подразумевани извоз: у модулу може бити само један подразумевани извоз.

// module.js
const defaultValue = 'default value';
export default defaultValue;

import

Оператор import се користи за увоз вредности које су извозиле друге модуле.

Именовани увоз:

// another-module.js
import { myVariable, myFunction } from './module.js';

Увоз са другим именом:

// another-module.js
import { myVariable as newVariableName } from './module.js';

Увоз свих именованих извозa у облику објекта:

// another-module.js
import * as moduleAlias from './module.js';
// Доступ: moduleAlias.myVariable, moduleAlias.myFunction

Увоз подразумеваног извозa:

// another-module.js
import defaultValueName from './module.js';

Увоз и именованог и подразумеваног извозa истовремено:

// another-module.js
import defaultValueName, { myVariable, myFunction } from './module.js';

Принципи рада:

  1. Статичка анализа: JavaScript мотор анализира операторе import и export током компилације (пре извршавања кода), стварајући граф зависности између модула.
  2. "Живе" везе: Увезене променљиве нису копије вредности из извозног модула. То су "живе" везе (живе референце) на променљиве из извора. Ако се вредност променљиве у извозном модулу промени, то ће бити видљиво преко увезене везе.
  3. Једнократно извршавање: Код сваког модула се извршава само једном при првом увозу тог модула. Резултати извозa се кеширају и користе у каснијим увозима.
  4. Користи у контексту: Модуле се извршавају у својој сопственој средини, изолованој од глобалног окружења. Променљиве које су проглашене у корену модула не загађују глобални простор имена, ако нису експлицитно извозене.