使用ES6语法动态导入JavaScript模块?

时间:2016-06-10 21:49:52

标签: javascript import ecmascript-6

是ES2015 +,我该如何动态导入模块?

E.g。而不是......

import {SomeClass} from 'lib/whatever/some-class';

我不知道运行时的路径,所以我希望将路径存储在变量中,并且我想从该模块导入特定的东西:

function doDynamicStuff(path) {
    let importedThing = ...; //import * as importedThing from path;
    let thingIReallyWant = importedThing.someExportedVariable;

    ...
}

我不确定使用什么语法,或者根本不可能这样做。我尝试使用let importedThing = require(path);,但我们没有使用RequireJS

1 个答案:

答案 0 :(得分:3)

ES2015不支持按设计进行动态导入。

  

在当前的JavaScript模块系统中,您必须执行代码才能找出导入和导出的内容。这就是ECMAScript 6打破这些系统的主要原因:通过将模块系统构建到语言中,您可以在语法上强制执行静态模块结构。

     

...

     

模块的结构是静态的意味着您可以在编译时确定导入和导出(静态) - 您只需要查看源代码,您不必执行它。

来自ECMAScript 6 modules: the final syntax

要动态导入模块,您必须明确使用模块加载器(如 RequireJS SystemJS