4

来自这篇文章: https ://hacks.mozilla.org/2015/08/es6-in-depth-modules/

上面写着

新标准旨在与现有的 CommonJS 和 AMD 模块进行互操作。

更准确地说

所有 CommonJS 和 AMD 模块在 ES6 中呈现为具有默认导出

如果真的是这样,我们只需要一个 ES6 polyfill,我们就不必使用其他任何东西了。

然而对于例如这个 ES6 Polyfill :https ://github.com/ModuleLoader/es6-module-loader似乎不允许从 ES6 加载 CommonJS/AMD 模块,但只有像 SystemJS 这样构建在它之上的解决方案才允许它。

所以问题是:官方 ES6 标准说应该支持 CommonJS/AMD(通过呈现为具有默认导出)是真的吗?

如果是这种情况,您是否参考了这样说的 ESCMA 规范?那么为什么它不是 polyfill 本身的一个特性,而不是建立在它之上的解决方案呢?

4

1 回答 1

4

到目前为止,这是我所理解的,但我可能错了,所以欢迎确认/纠正。

  • ECMAScript 6没有指定与 AMD、CommonJS 或任何其他模块格式的任何兼容性。它只允许规范中定义的 ECMAScript 6 模块。

  • 但是这个来源

模块加载器:不是 ES2015 的一部分。这在 ECMAScript 2015 规范中保留为实现定义。最终的标准将在 WHATWG 的 Loader 规范中,但目前正在进行中。

模块加载器规范将允许定义您自己的自定义模块加载器。因此,可以通过编写您自己的加载器来导入 AMD、CommonJS 等,该加载器将描述如何加载这样的模块。但它也允许加载例如咖啡脚本或任何其他资源,只要我们的自定义模块加载器描述如何解释该资源。

于 2016-01-17T18:20:29.133 回答