目前,您不能使用静态 import 语句(例如 import someModule from "some-module"),并且我不知道有任何努力/票证/公关/意图来改变它。
您可以使用import() 语法来加载模块!这将返回一个承诺。例如,您可以创建一个变量someModule,开始导入,并在导入完成后,将someModule 设置为该模块:
let someModule
import("some-module")
.then( loaded=> someModule= loaded)
或者您可以直接在您的承诺处理程序中使用导入:
import("some-module").then(someModule => someModule.default())
对于更复杂的示例,您可能希望使用异步立即调用函数表达式,因此您可以使用await 语法:
(async function(){
// since we are in an async function we can use 'await' here:
let someModule = await import("some-module")
console.log(someModule.default())
})()
最后,如果您使用 --experimental-repl-await 标志启动 Node.JS,您可以直接从 repl 中使用 async 并删除 async 立即调用的函数:
let someModule = await import("some-module")
// because you have already 'await'ed
// you may immediately use someModule,
// whereas previously was not "loaded"
console.log(someModule.default())