使用CommonJS,require
调用是同步的,可以像这样动态加载模块:
require('./' + localModulePath);
ES6引入了System.import
,它返回一个Promise,而标准import
似乎不允许在运行时确定的名称。这是ESJ模块缺少的CommonJS功能还是我遗漏了什么?
答案 0 :(得分:3)
这是ESJ模块缺少的CommonJS功能还是我遗漏了什么?
我不这么认为。模块加载过程是异步的这一事实允许您在不同的环境中使用相同的方式。例如。在浏览器中,不可能同步加载模块,或者至少我们要避免它,因为在JS中同步获取资源是不好的。
但是,import
语法为您提供了同步加载的印象。故意做出决定,使语句可以静态分析,以便环境可以在执行脚本之前加载所有依赖项,这是他们想要的。