Dynamický import ES modulů v JavaScriptu

ES moduly lze importovat dynamicky. Tato schopnost může být někdy užitečná. Podívejme se, jak se to dělá. Předpokládejme, že máme následující modul:

src/test.jsexport function func1() {
  return '1'
}
export function func2() {
  return '2'
}
export default function() {
  return 'text';
};

Předpokládejme, že chceme tento modul importovat ne okamžitě, ale až po určité události, například po kliknutí na tlačítko:

src/index.jsbtn.addEventListener('click', function() {
  
});

Naimportujeme modul pomocí příkazu import:

src/index.jsbtn.addEventListener('click', function() {
  import('./test.js');
});

Příkaz import vrací jako svůj výsledek promise:

src/index.jsbtn.addEventListener('click', function() {
  import('./test.js').then(mod => {
    
  });
});

Do proměnné callbacku se dostane objekt s exportovanými funkcemi:

src/index.jsbtn.addEventListener('click', function() {
  import('./test.js').then(mod => {
    let res1 = mod.func1();
    let res2 = mod.func2();
    
    console.log(res1, res2);
  });
});

To, co je exportováno jako výchozí (default), bude uloženo v klíči default:

src/index.jsbtn.addEventListener('click', function() {
  import('./test.js').then(mod => {
    let dfn = mod.default;
    console.log(dfn);
  });
});

Při importu lze provést destrukturalizaci:

src/index.jsbtn.addEventListener('click', function() {
  import('./test.js').then(({func1, func2}) => {
    let res1 = func1();
    let res2 = func2();
    
    console.log(res1, res2);
  });
});
Задание 1

Vytvořte modul, který exportuje pole názvů dnů v týdnu. Po stisknutí tlačítka importujte tento modul a vypište dny v týdnu jako seznam ul.