Соответствует ли Babel 7 спецификации модулей ES? - PullRequest
0 голосов
/ 30 ноября 2018

Звучит так, как будто у Бабеля не было поддержки модуля ES6 в полном соответствии со спецификацией;Мне интересно, каково текущее состояние, и возникают проблемы с поиском информации.

В книге доктора Раушмайера "Исследование ES6" описываются свойства объекта импорта.

http://exploringjs.com/es6/ch_modules.html#sec_imports-as-views-on-exports

В частности, «импорт - это динамические представления, доступные только для чтения для экспортируемых значений», и следующее не разрешено:

import { foo } from './foo';
import foo2 from './foo';
import * as foo3 from './foo';
foo = '...'; // error, foo is readonly
foo2 = '...'; // error, foo is readonly
foo3.foo = '...'; // error, foo3 is a frozen object

Однако в Babel я заметил несоответствие в отношении экспорта по умолчанию, которое все еще сохраняется.существует в версии 7:

// foo.js
export function foo() {}
export default foo;

// other.js
import * as fooStuff from './foo';

fooStuff.default = function newFoo() {}; // no error
fooStuff.foo = function newFoo() {}; // error

Это объясняется различием в выводе Babel для двух случаев:

// default export
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = foo;

// named export
Object.defineProperty(exports, "__esModule", {
  value: true
});
Object.defineProperty(exports, "foo", {
  enumerable: true,
  get: function get() {
    return _foo.default;
  }
});

Насколько я понимаю, экспорт по умолчанию - это просто еще один именованный экспорт, которыйслучайно получило название «default», но в Babel 7 это, похоже, не реализовано таким образом. Я создал репо с различными тестовыми примерами на https://github.com/yossarian21/import-spec

Итак, мои вопросы:

  1. Действительно ли Babel отклоняется от спецификации или я неправильно понимаю спецификацию?
  2. Где я могу найти информацию о плане Babel по реализации спецификации?
  3. Является ли node.js реализует поддержку импорта / экспорта в соответствии со спецификацией?
...