【问题标题】:ES6 module's "import" officially compatible with CommonJS and AMD?ES6 模块的“导入”正式兼容 CommonJS 和 AMD?
【发布时间】:2015-12-29 20:13:32
【问题描述】:

来自这篇文章: 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 本身的一个特性,而不是基于它构建的解决方案呢?

【问题讨论】:

    标签: javascript ecmascript-6 amd commonjs es6-module-loader


    【解决方案1】:

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

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

    • 然而来自this source

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 2012-05-28
      相关资源
      最近更新 更多