2015-04-01 4 views
4

Я имел в виду сделать это с BabelJS, однако я не уверен, поддерживает ли Babel или спецификации его в настоящий момент.Сокращение для экспорта импорта

Outer.js Учитывая:

export default function() { } 

В приведенном ниже примере не работает.

export Outer from './Outer' 

С CommonJS модулями, это может быть легко написана как

exports.x = require('./x'); 
+0

Вы можете использовать: '' 'js export * from './Outer'; '' ' –

+0

Спасибо! Я просто немного очистил ситуацию, добавив дополнительную информацию о том, что может содержать 'Outer.js' (' module.exports' или 'export default'). – srph

ответ

4

По состоянию 3 апреля 2015, в BabelJS команда выпустила v5.0 3 дня назад, которая включает в себя поддержку указанной сокращенно, как указано в их blog post.

Предложение дополнительной заявки на экспорт от оператора Lee Byron завершает симметрию между операцией импорта и экспорта, что позволяет легко экспортировать пространства имен и значения по умолчанию из внешних модулей без изменения локальной области.

Экспорт по умолчанию

export foo from "bar"; 

эквивалентно:

import _foo from "bar"; 
export { _foo as foo }; 

Старый Ответ:

Этот экспорт обозначения

export v from "mod"; 

не поддерживается в ES6 (см. Поддерживаемые примеры in the specification), но его можно поддерживать в ES7 (см. this proposal).

Для достижения точно тот же результат, который вы должны использовать import сейчас:

import Outer from './Outer'; 
export {Outer}; 
+1

Спасибо! Вопрос только в том, что если вы знакомы с BabelJS (ранее «6to5»), можно ли предположить, что их «экспериментальный» вариант поддерживает предложение? Потому что я транслирую свой код с помощью BabelJS (и webpack) с опцией 'experimental', установленной в' true', однако она не работает. – srph

+1

@srph Насколько я знаю, babel не поддерживает его и не имеет «экспериментального» флага, а не с ним.Я не знаю, собирается ли команда Babel выполнить это предложение в ближайшем будущем или нет. Но ведь предложение имеет только этап 1. Когда он станет этапом 2, у него будет больше смысла, чтобы он мог его реализовать, а теперь он есть. – alexpods

+0

@srph Я исправлю ссылку на сообщение в блоге. Спасибо, за обновление! – alexpods

0

машинопись 1,5 также поддерживает ES 2015 дополнительный экспорт из синтаксических:

export { default as Injector } from './lib/Injector'; 

, который генерирует в соответствии с ES5:

var Injector_1 = require('./lib/Injector'); 
exports.Injector = Injector_1.default; 
Смежные вопросы