Именованный экспорт и экспорт объекта
Почему это работает:
const str = 'stuff';
export {
str
};
Но не это:
export default {
str: 'stuff'
};
Я хотел бы импортировать его как следующее:
import { str } from 'myLib';
Я хотел бы присвоить значение непосредственно в экспорте и не требовать создания переменной перед началом работы.
Также, когда я пытаюсь:
export {
str: 'stuff'
};
Я получаю сообщение об ошибке:
SyntaxError: /home/karlm/dev/project/ex.js: Unexpected token, expected , (41:5)
39 |
40 | export {
> 41 | str: 'stuff'
| ^
42 | };
43 |
Ответы
Ответ 1
В ES6 есть два стиля экспорта: "обычный" экспорт и экспорт по умолчанию. Обычный экспорт экспортируется с синтаксисом следующим образом:
export const str = 'stuff';
// or
const str = 'stuff';
export {str};
Экспорт по умолчанию выглядит следующим образом:
export default const str = 'stuff';
// or
export default {
str: 'stuff'
};
Разница возникает при импорте. В первую очередь вам нужно включить фигурные скобки:
import {str} from 'myModule'; // 'stuff', from the first example
Без фигурных скобок он импортирует экспорт по умолчанию:
import myModule from 'myModule'; // {str: 'stuff'}, from the second example
Ответ 2
Основная причина инструкции экспорта используется для экспорта функций, объектов или примитивов из заданного файла (или модуля).
Но вам нужен идентификатор для экспорта (чтобы его можно было импортировать через import
в другой script).
Вы можете просто сделать:
export const obj = {
str: 'stuff'
};
Во время import вы сможете использовать одно и то же имя obj
для ссылки на соответствующее значение.
И импортируйте его как:
import { obj } from 'myLib';