ES6 模块的 "import" 正式兼容 CommonJS 和 AMD?
ES6 module's "import" officially compatible with CommonJS and AMD?
来自这篇文章:
https://hacks.mozilla.org/2015/08/es6-in-depth-modules/
写的是
The new standard is designed to interoperate with existing CommonJS and AMD modules.
更准确地说
All CommonJS and AMD modules are presented to ES6 as having a default export
如果真的是这样的话,我们只需要一个 ES6 polyfill,我们就不必使用任何其他东西了。
然而,例如这个 ES6 Polyfill :https://github.com/ModuleLoader/es6-module-loader 似乎不允许从 ES6 加载 CommonJS/AMD 模块,但只有像 SystemJS 这样构建在它之上的解决方案才允许它。
所以问题是:官方 ES6 标准说 CommonJS/AMD 应该被支持(通过显示为具有默认导出)是真的吗?
如果是这样的话,你有没有这样说的 ESCMA 规范的参考资料?那么为什么它不是 polyfill 本身的一个特性,而是构建在它之上的解决方案?
到目前为止,这是我的理解,但我可能是错的,所以欢迎confirmation/rectifications。
ECMAScript 6 不指定与 AMD、CommonJS 或任何其他模块格式的任何兼容性。它只允许规范中定义的 ECMAScript 6 模块。
但是 来自this source :
Module Loaders : Not part of ES2015. This is left as implementation-defined within the ECMAScript 2015 specification. The eventual standard will be in WHATWG's Loader specification, but that is currently a work in progress.
模块加载器规范将允许定义您自己的自定义模块加载器。因此,可以通过编写自己的加载程序来导入 AMD、CommonJS 等...,该加载程序将描述如何加载此类模块。但它也将允许加载例如咖啡脚本或任何其他资源,只要我们的自定义模块加载器描述了如何解释此资源。
来自这篇文章: https://hacks.mozilla.org/2015/08/es6-in-depth-modules/
写的是
The new standard is designed to interoperate with existing CommonJS and AMD modules.
更准确地说
All CommonJS and AMD modules are presented to ES6 as having a default export
如果真的是这样的话,我们只需要一个 ES6 polyfill,我们就不必使用任何其他东西了。
然而,例如这个 ES6 Polyfill :https://github.com/ModuleLoader/es6-module-loader 似乎不允许从 ES6 加载 CommonJS/AMD 模块,但只有像 SystemJS 这样构建在它之上的解决方案才允许它。
所以问题是:官方 ES6 标准说 CommonJS/AMD 应该被支持(通过显示为具有默认导出)是真的吗?
如果是这样的话,你有没有这样说的 ESCMA 规范的参考资料?那么为什么它不是 polyfill 本身的一个特性,而是构建在它之上的解决方案?
到目前为止,这是我的理解,但我可能是错的,所以欢迎confirmation/rectifications。
ECMAScript 6 不指定与 AMD、CommonJS 或任何其他模块格式的任何兼容性。它只允许规范中定义的 ECMAScript 6 模块。
但是 来自this source :
Module Loaders : Not part of ES2015. This is left as implementation-defined within the ECMAScript 2015 specification. The eventual standard will be in WHATWG's Loader specification, but that is currently a work in progress.
模块加载器规范将允许定义您自己的自定义模块加载器。因此,可以通过编写自己的加载程序来导入 AMD、CommonJS 等...,该加载程序将描述如何加载此类模块。但它也将允许加载例如咖啡脚本或任何其他资源,只要我们的自定义模块加载器描述了如何解释此资源。