在 ES6 中同步加载其名称在运行时确定的模块

Synchronously load a module whose name is determined at runtime in ES6

本文关键字:运行时 模块 ES6 同步 加载      更新时间:2023-09-26

使用 CommonJS,require调用是同步的,可以轻松地像这样动态加载模块:

require('./' + localModulePath);

ES6 引入了返回 Promise 的 System.import,标准import似乎不允许在运行时确定的名称。这是 ES6 模块缺少的 CommonJS 功能还是我缺少什么?

这是 ES6 模块缺少的 CommonJS 功能还是我缺少什么?

我不这么认为。模块加载过程是异步的这一事实允许您在不同的环境中使用相同的方式。例如,在浏览器中不可能同步加载模块,或者至少我们希望避免它,因为在 JS 中同步获取资源是不好的。

但是,import语法给您的印象是同步加载。使语句可静态分析是一个深思熟虑的决定,以便环境可以在执行脚本之前加载所有依赖项,无论它们希望哪种方式。