Я думаю, что я прошу, не возможно OOB, но я хочу подтвердить.Могу ли я экспортировать объект с помощью `export` как` `module.export`?
Мы находимся в процессе обновления до ES6 (используя Babel). Проект - это веб-сайт с использованием AMD (requirejs). Я хотел бы включить служебный модуль (foolib
) в ES6, но потребляю его от либо ES6 (используя import
), либо существующий модуль ES5/AMD.
// foolib.es6
export { // as expected, this doesn't work
method1: function() { ... },
value1: 123.456
};
// consumer1.es6
import foolib from "foolib";
// consumer2.js
define(["foolib"], function (foolib) {});
Я понимаю, что решение изменить foolib.es6
следующим образом:
export function method1() { ... };
export let value1 = 123.456;
Однако в действительности количество возвращаемых записей из foolib
смешно. Поэтому я надеялся, что есть способ экспортировать существующий литерал объекта без перезаписи каждой строки.
Кроме того, я понимаю, что это, скорее всего, невозможно, из-за различия между импортом AMD (с использованием define
) и import
механизма (позже работает с exports
объектом, который имеет значение висит от него, в том числе default
стоимости, в то время как бывшие предпологает одно значение, которое нужно вернуть).
Одно из возможных решений, которые я думаю, мог бы работать, чтобы экспортировать свой объект как default
из foolib.es6
, а затем настроить requirejs загрузчик по умолчанию для проверки импортируемого значение для будучи esModule и вернуть значение по умолчанию: value && value.__esModule && value.default || value
. Должно ли это работать? (Я все еще надеюсь, что есть более легкое решение).
'export default {method1: function() {}, ...}' и ['babel-plugin-add-module-exports'] (https://www.npmjs.com/package/babel-plugin -add-module-exports) – sdgluck
@sdgluck: да, это так. Работает с обоими потребителями. Сделайте ответ, пожалуйста. Пожалуйста, включите getcha, что этот плагин _must_ будет включен _before_ any -modules- плагин ('transform-es2015-modules-amd' в моем случае). –