【问题标题】:JavaScript modules - dynamic imports and side effectsJavaScript 模块 - 动态导入和副作用
【发布时间】:2021-03-03 22:02:33
【问题描述】:

谁能准确地告诉我以下内容的含义,从MDN docsimport()(强调我的):

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

我看不出动态导入对副作用有何影响。引用表明动态导入以某种方式减轻或可以避免副作用,(据我所知)这不是真的。是的,它们意味着我们可以有条件地导入,但导入仍然意味着副作用。

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

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

//...

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

...我仍然收到警报。

我是否以某种方式误解了上述内容?

【问题讨论】:

    标签: javascript import module ecmascript-2017


    【解决方案1】:

    我也可能有误解,但我的看法是你可以有条件地导入东西:

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

    因此,如果模块中存在副作用,则只有在实际使用模块的情况下才会得到它们。在静态情况下,模块总是被导入并且你总是得到副作用。

    【讨论】:

    • 我认为这就是它的驱动力,是的,但对我来说,这使得语言看起来有点过于乐观。我们从一开始就知道动态导入意味着仅在何时加载它们;不过,它们对副作用没有事实上的影响。我会接受,因为我认为你是对的。
    猜你喜欢
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2020-07-25
    • 2011-04-17
    • 2023-02-01
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多