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

Jos*_* M. 5 javascript import ecmascript-6

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

而不是......

import {SomeClass} from 'lib/whatever/some-class';
Run Code Online (Sandbox Code Playgroud)

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

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

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

Zhe*_*gan 3

ES2015 在设计上不支持动态导入。

\n
\n

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

\n

...

\n

module\xe2\x80\x99s 结构是静态的意味着您可以在编译时确定导入和导出(静态)\xe2\x80\x93 你只需要查看源代码,你不需要\xe2\x80\x99来执行它。

\n
\n

来自ECMAScript 6 模块:最终语法

\n

要动态导入模块,您必须显式使用模块加载器(例如RequireJSSystemJS

\n