Разница между: экспортировать {что-то} и экспортировать что-то

В чем разница между выполнением следующих действий:

import something from "../something";
export { something };

vs

import something from "../something";
export something;

В пакете react-is из реакции есть экспорт делать то же самое. Я хочу понять, что это значит.

Вот строка кода, которая это делает. https://github.com/facebook/react/blob/master/packages/react-is/src/ReactIs.js#L69


person pgarciacamou    schedule 23.07.2018    source источник
comment
Взгляните на этот stackoverflow. ком/вопросы/37200080/   -  person dnp1204    schedule 23.07.2018
comment
Возможный дубликат Как экспортировать импортированный объект в ES6?   -  person Dez    schedule 23.07.2018
comment
Один экспортирует something, а другой экспортирует объект с something на нем.   -  person zero298    schedule 23.07.2018
comment
@zero298 как бы вы импортировали тот, который делает export { something }?   -  person pgarciacamou    schedule 23.07.2018


Ответы (1)


Верен только первый фрагмент. Он импортирует экспорт по умолчанию из ../something и экспортирует его как экспорт с именем something из текущего модуля.

Модуль ES export имеет ограниченные варианты синтаксиса, то же самое делает import. Если синтаксис не указан в справочнике, он не поддерживается.

export something;

недействителен, это приведет к синтаксической ошибке. something — это выражение в export something. Согласно ссылке, только export default может использовать выражение.

Именованные экспорты должны либо содержать объявление:

export let something = ...;

Или, если something уже существует в текущей области, как в этом случае, следует использовать фигурные скобки:

export { something };

Если something не используется в текущем модуле ни для чего, кроме реэкспорта, ярлык для

import something from "../something";
export { something };

is

export { default as something } from "../something";
person Estus Flask    schedule 23.07.2018