JavaScript模块-动态导入和副作用



有人能从import()的MDN文档中准确地告诉我以下内容的含义吗(强调我的意思(:

以下是您可能需要使用动态导入的一些原因:。。。当导入的模块有副作用时,您不希望这些副作用,除非某些条件成立。

我看不出动态导入对副作用有什么影响。这句话表明,动态进口在某种程度上减轻或可以避免副作用,但据我所知,这不是真的。是的,它们意味着我们可以有条件地进口,但进口仍然意味着副作用。

也就是说,如果我这样做:

//module.js
let foo = 'bar';
alert('Unwanted side effect!');
export {foo};
//...
//mainscript.js
import('./module.js').then(obj => { });

我仍然收到警报。

我是不是误解了上面的内容?

我可能也有误解,但我认为你可以有条件地导入东西:

//mainscript.js
if(somethingIsTrue){
import('./module.js').then(obj => { });
}

因此,如果模块中存在副作用,则只有在实际使用模块的情况下才会出现副作用。在静态情况下,模块总是被导入,并且总是会产生副作用。

最新更新