Junior
Kuidas töötavad import ja export operaatorid JavaScriptis?
sobes.tech AI
Vastus AI-lt
JavaScripti import ja export operaatorid kasutatakse moodulitega töötamiseks, võimaldades jagada koodi sõltumatuteks, korduvkasutatavateks osadeks ning hallata nende vahelisi sõltuvusi.
export
export operaatorit kasutatakse muutujaid, funktsioone, klasse või muid väärtusi moodulist eksportimiseks. Eksport võib olla nimetatud või vaikimisi.
Nimetatud eksport:
// module.js
export const myVariable = 10;
export function myFunction() { // ... }
export class MyClass { // ... }
Vaikimisi eksport: moodulis võib olla ainult üks vaikimisi eksport.
// module.js
const defaultValue = 'default value';
export default defaultValue;
import
import operaatorit kasutatakse väärtuste importimiseks, mida on eksportinud teised moodulid.
Nimetatud import:
// another-module.js
import { myVariable, myFunction } from './module.js';
Teise nimega import:
// another-module.js
import { myVariable as newVariableName } from './module.js';
Kõigi nimetatud eksportide import objekti kujul:
// another-module.js
import * as moduleAlias from './module.js';
// Juurdepääs: moduleAlias.myVariable, moduleAlias.myFunction
Vaikimisi eksport:
// another-module.js
import defaultValueName from './module.js';
Nimetatud ja vaikimisi eksportide samaaegne import:
// another-module.js
import defaultValueName, { myVariable, myFunction } from './module.js';
Tööpõhimõtted:
- Statiline analüüs: JavaScripti mootor analüüsib
importjaexportoperaatoreid koodi kompileerimise ajal, luues sõltuvusgraafi. - "Elavad" sidemed: Imporditud muutujad ei ole koopiad eksportiva mooduli väärtustest. Need on "elavad" sidemed (elavad viited) algsest moduli. Kui eksportiva mooduli väärtus muutub, on see nähtav imporditud sideme kaudu.
- Ühekordne täitmine: Iga mooduli kood täidetakse ainult üks kord, esimese impordi ajal. Eksportide tulemused vahemällu salvestatakse ja kasutatakse järgmistel importidel.
- Kontekstis kasutamine: Moodulid täidetakse oma kontekstis, eraldatuna globaalsest keskkonnast. Muutujad, mis on moodulis deklareeritud, ei saasta globaalseid nimeruume, kui need ei ole otseselt eksporditud.