MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Încărcarea dinamică a modulelor

Modulele pot fi încărcate dinamic în orice parte a unui alt modul. În acest caz, trebuie să țineți minte că modulul este încărcat asincron, iar rezultatul funcției import va fi un obiect Promise, a cărui rezolvare va fi chiar modulul încărcat.

import("calea_către_modul").then((module) => {
   // acțiuni cu modulul
 });

De asemenea, se poate folosi operatorul await pentru a obține obiectul modulului:

let module = await import("calea_către_modul");

De exemplu, să presupunem că avem definit următorul modul message.js:

export const hello = "Hello Work!";

export default function sayHello() {
 console.log("Hello FDC.COM");
}

Aici sunt exportate constanta hello și funcția sayHello(), funcția fiind exportată implicit.

Să conectăm dinamic acest modul într-un alt modul main.js:

console.log("Main module starts");

import("./message.js").then((module) => {
   
   module.default();
   console.log(module.hello);
});

console.log("Main module ends");

Aici, funcția din metoda then() primește ca parametru modulul încărcat. Apoi, putem accesa componentele modulului după nume. De exemplu, accesând constanta hello

module.hello

Totuși, dacă un component este exportat implicit, pentru a accesa acest component se folosește cuvântul cheie default. Astfel, deoarece funcția sayHello() este exportată implicit, expresia:

module.default();

va reprezenta de fapt apelul acestei funcții.

Output-ul consolii programului:

Main module starts
Main module ends
Hello FDC.COM
Hello Work!

De asemenea, în acest caz, se putea folosi operatorul await pentru a obține modulul încărcat:

console.log("Main module starts");

const module = await import("./message.js");

module.default();
console.log(module.hello);

console.log("Main module ends");

Încărcarea dinamică a modulelor ne oferă posibilitatea de a încărca module în diverse situații, inclusiv în funcții, construcții ciclice și condiționale și în alte părți ale programului. De exemplu, am putea încărca un modul în funcție de condiție:

const hour = new Date().getHours();
if(hour < 17){
   const module = await import("./message.js");
   console.log(module.hello);
}
else{
   console.log("Go home");
}

În acest caz, obținem ora curentă. Și dacă este mai mică de 17, încărcăm modulul și afișăm valoarea constantei hello din modulul încărcat. Altfel, afișăm un anumit mesaj.

← Lecția anterioară Lecția următoare →