Критическое изменение: стандартное поведение экспорта Babel 6
С выпуском Babel 6 в обработку экспорта по умолчанию были внесены существенные изменения . Хотя ранее компания Babel добавляла строку Module.exports = Exports["default"], эта функциональность была удалена.
Эта модификация требует изменения синтаксиса импорта модуля. Ранее код использовал устаревший синтаксис:
var foo = require('./foo'); // use foo
Теперь необходимо использовать следующий синтаксис:
var foo = require('./foo').default; // use foo
Хотя эта корректировка может показаться незначительной, она может создать проблему для проектов со значительной зависимостью кода от предыдущего механизма экспорта.
Обходное решение
Если требуется устаревшее поведение экспорта, рекомендуется прямое использование CommonJS. В качестве альтернативы можно использовать собственный плагин для обеспечения желаемой совместимости. Функциональность этого плагина, скорее всего, будет отражать поведение, удаленное в Babel 6, с добавлением строки Module.exports = Exports["default"] к транспилированному выводу.
Влияние именованного экспорта
Стоит отметить, что удаление автоматического назначения модуля.exports улучшает семантику ES6 и предотвращает потенциальную путаницу. Именованный экспорт теперь будет вести себя так, как ожидалось, без случайного назначения экспорту по умолчанию.
Пример
Следующий код демонстрирует разницу между поведением экспорта Babel 5 и Babel 6:
// Input
const foo = {}
export default foo
Babel 5 Вывод
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Babel 6 Output
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Как можно заметить, единственная разница в выводе — это отсутствие модуля.exports = Exports["default"] в Babel 6.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3