02. Export
Модуль может экспортировать любые объявления элементов - var
, let
, const
, class
, функции и т.д. Экспорт может выполняться как в момент объявления элемента, так и после него.
Существует две разновидности экспорта (их можно смешивать, ):
Именованный экспорт - когда в модуле несколько экспортов.
Default экспорт - один экспорт на весь модуль.
Эти два способа можно совмещать в одном модуле, но не рекомендуется.
Технически говоря, можно использовать именованный экспорт для одного модуля, но так желательно делать если API модуля в будущем будет расширяться. Если модуль экспортирует действительно "одну вещь", то default-экспорт является предпочтительным способом использования.
Named export
Именованный экспорт экспортирует любое объявление по его имени. Для экспорта перед объявлением элемента добавляется ключевое слово export
:
При импорте, поиск значения выполняется по его имени при экспорте, откуда и название.
Ключевое слово export
можно использовать отдельно, при этом в фигурных скобках указывается, что именно экспортируется.
При помощи ключевого слова as
можно указать имя по которому будет доступна переменная за пределами модуля.
Default export
Для ситуации, когда модуль экспортирует ровно одно значение, предусмотрено особое ключевое сочетание export default
. Если поставить после export
слово default
, то значение станет “экспортом по умолчанию”. Такое значение можно импортировать без фигурных скобок:
Технически, после export default
может стоять любое выражение, результат которого экспортируется в виде служебной переменной со специальным именем default
:
Если операндом default export
является выражение не имеющее собственного имени, то при импорте оно будет идентифицировано через имя модуля.
Mixed export
Можно иметь как named export так и default export в одном файле:
Re-export
Re-exporting means adding another module’s exports to those of the current module.
You can either add all of the other module’s exports:
Or you can be more selective (optionally while renaming):
Default exports are ignored by export *
. The following statement makes the default export of another module foo the default export of the current module:
The following statement makes the named export myFunc
of module foo the default export of the current module:
Last updated
Was this helpful?