2015-12-29 5 views
3

Из этой статьи: https://hacks.mozilla.org/2015/08/es6-in-depth-modules/«импорт» модуля ES6 официально совместим с CommonJS и AMD?

написано, что

Новый стандарт предназначен для взаимодействия с существующей CommonJS и модулями AMD.

И более точно

Все модули CommonJS и AMD представлены в ES6 как имеющие экспорт

по умолчанию Если это действительно так, все мы должны были бы это ES6 polyfill и нам не нужно было ничего использовать.

Однако, например, этот ES6 Polyfill: https://github.com/ModuleLoader/es6-module-loader, похоже, не позволяет загружать модули CommonJS/AMD из ES6, но это позволяют использовать только решения, построенные на его основе, такие как SystemJS.

Итак, вопрос: верно ли, что официальный стандарт ES6 говорит, что поддержка CommonJS/AMD должна поддерживаться (будучи представленным как имеющий экспорт по умолчанию)?

Если это так, у вас есть ссылка на спецификацию ESCMA, которая так говорит? и почему тогда это не особенность самого полипол, а не решений, построенных на нем?

ответ

3

До сих пор это то, что я понял, но я могу ошибаться, так что подтверждение/исправления приветствуются.

  • ECMAScript 6 не определяет любую совместимость с AMD, CommonJS или любой другой формат модуля. Он разрешает только модуль ECMAScript 6, определенный в спецификации.

  • Однако из this source:

Модуль Погрузчики: Не часть ES2015. Это оставлено как реализация, определенная в спецификации ECMAScript 2015. Конечный стандарт будет в спецификации Loader WHATWG, но в настоящее время это незавершенное производство.

Спецификация модуля Loader позволяет определить ваш собственный пользовательский загрузчик модулей. Таким образом, можно будет импортировать AMD, CommonJS и т. Д., Написав собственный загрузчик, который будет описывать, как загрузить такой модуль. Но это также позволит загружать, например, скрипт кофе или любой другой ресурс, если наш пользовательский загрузчик модулей описывает, как интерпретировать этот ресурс.