Модули JavaScript позволяют разбивать код на отдельные файлы.
Это облегчает обслуживание и сопровождение программного кода.
Модули ES базируются на инструкциях import
и export
.
Экспорт
Вы можете экспортировать функцию или переменную из любого файла.
Давайте создадим файл с именем person.js и заполним его теми элементами, которые хотим экспортировать.
В ES6-модулях существует две формы экспорта: именованный экспорт и экспорт по умолчанию. Они отличаются способом объявления, синтаксисом и использованием.
Именованный экспорт
Именованный экспорт позволяет экспортировать несколько сущностей (функций, классов, объектов, констант и др.) из одного модуля.
Особенности именованного экспорта:
- Можно экспортировать произвольное количество сущностей.
- Каждая экспортируемая сущность имеет уникальное имя, которое используется при импорте.
- Имя каждой сущности сохраняется при экспорте и импорте.
Вы можете создать именованные экспорты двумя способами:
Пример
Отдельно, в строку:
// person.js
export const name = "Tobias";
export const age = 18;
Пример
Все вместе внизу:
// person.js
const name = "Tobias";
const age = 18;
export { name, age };
Экспорт по умолчанию
Создадим ещё один файл с именем message.js и воспользуемся им для демонстрации экспорта по умолчанию.
Экспорт по умолчанию позволяет определить одну основную сущность (класс, объект, функцию и т.п.), которая представляет основной API модуля.
Особенности экспорта по умолчанию:
- Каждый модуль может иметь только один экспорт по умолчанию.
- Экспортированная сущность не обязана иметь собственное имя, так как имя задаётся при импорте.
- Удобно для случаев, когда основной функцией модуля является одна главная сущность.
Пример
Вставьте следующий код в созданный файл:
// message.js
const message = () => {
const name = "Tobias";
const age = 18;
return name + ' is ' + age + ' years old.';
};
export default message;
- Именованный экспорт удобен, когда нужно экспортировать несколько разных частей модуля.
- Экспорт по умолчанию полезен, когда есть одна главная сущность, представляющая модуль.
Импорт
Вы можете импортировать модули в файл двумя способами, в зависимости от того, являются ли они именованными экспортами или экспортами по умолчанию.
Именованные экспорты требуют деструктуризации с помощью фигурных скобок. Экспорты по умолчанию не нуждаются в этом.
Пример
Импортируем именованные экспорты из файла person.js:
import { name, age } from "./person.js";
Важные моменты:
- Чтобы использовать имена при импорте, их нужно указывать явно
{ имя1, имя2 }
. - Можно переименовать при импорте с помощью конструкции
as
:import { greet as sayHello } from './module.js'
.
Пример
Импортируем экспорт по умолчанию из файла message.js:
import message from "./message.js";
Важные моменты:
- Экспорт по умолчанию доступен под любым именем при импорте.
- Используется простой синтаксис импорта без фигурных скобок:
import Имя from 'модуль'
.