使用 CommonJS,require
调用是同步的,可以轻松地动态加载模块,如下所示:
require('./' + localModulePath);
ES6 引入了 System.import
,它返回一个 Promise,而标准的 import
似乎不允许在运行时确定名称。这是 ES6 模块中缺少的 CommonJS 功能还是我缺少某些东西?
最佳答案
Is this a feature of CommonJS that is missing with ES6 modules or am I missing something?
我不这么认为。模块加载过程是异步的,这一事实允许您在不同的环境中使用相同的方式。例如。在浏览器中,不可能同步加载模块,或者至少我们想避免它,因为在 JS 中同步获取资源是不好的。
但是,import
语法给您同步加载的印象。这是一个经过深思熟虑的决定,使语句可静态分析,以便环境可以在执行脚本之前以他们想要的方式加载所有依赖项。
关于javascript - ES6中同步加载运行时确定名称的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28014605/