javascript-ES6模块的“导入”正式与CommonJS和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本身的功能,而不是基于它的解决方案呢?

解决方法:

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

> 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等.但是,只要我们的自定义模块加载程序描述了如何解释此资源,它也将允许加载例如咖啡脚本或任何其他资源.

上一篇:在Javascript AMD中,定义没有名称的模块为什么有用?


下一篇:javascript-定义CommonJS模块时fn.call(this)与fn()