Import dinamico dei moduli ES in JavaScript
I moduli ES possono essere importati dinamicamente. Questa funzionalità a volte può essere utile. Vediamo come si fa. Supponiamo di avere il seguente modulo:
export function func1() {
return '1'
}
export function func2() {
return '2'
}
export default function() {
return 'text';
};
Supponiamo di voler importare questo modulo non immediatamente, ma in base a qualche evento, ad esempio, al click su un pulsante:
btn.addEventListener('click', function() {
});
Importiamo il modulo utilizzando il comando
import:
btn.addEventListener('click', function() {
import('./test.js');
});
Il comando import restituisce
una promise come risultato:
btn.addEventListener('click', function() {
import('./test.js').then(mod => {
});
});
Nella variabile della callback verrà passato un oggetto con le funzioni esportate:
btn.addEventListener('click', function() {
import('./test.js').then(mod => {
let res1 = mod.func1();
let res2 = mod.func2();
console.log(res1, res2);
});
});
Ciò che viene esportato come default,
sarà contenuto nella chiave default:
btn.addEventListener('click', function() {
import('./test.js').then(mod => {
let dfn = mod.default;
console.log(dfn);
});
});
È possibile eseguire la destrutturazione durante l'importazione:
btn.addEventListener('click', function() {
import('./test.js').then(({func1, func2}) => {
let res1 = func1();
let res2 = func2();
console.log(res1, res2);
});
});
Crea un modulo che esporti un array
dei nomi dei giorni della settimana. Alla pressione di un pulsante
importa questo modulo e visualizza
i giorni della settimana come una lista ul.