"Импорт" модуля ES6 официально совместим с CommonJS и AMD?

Из этой статьи: https://hacks.mozilla.org/2015/08/es6-in-depth-modules/

Написано что

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

А точнее

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

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

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

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

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

1 ответ

Решение

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

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

  • Однако из этого источника:

Модульные загрузчики: не является частью ES2015. Это оставлено как определяемое реализацией в спецификации ECMAScript 2015. Возможный стандарт будет в спецификации загрузчика WHATWG, но в настоящее время он находится в стадии разработки.

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

Другие вопросы по тегам