В этом руководстве вы узнаете о модулях в JavaScript с помощью примеров.
По мере роста нашей программы она может содержать много строк кода. Вместо того, чтобы помещать все в один файл, вы можете использовать модули для разделения кодов в отдельные файлы в соответствии с их функциональностью. Это делает наш код организованным и более простым в обслуживании.
Модуль - это файл, содержащий код для выполнения определенной задачи. Модуль может содержать переменные, функции, классы и т. Д. Давайте посмотрим на пример,
Предположим, файл с именем greet.js содержит следующий код:
// exporting a function export function greetPerson(name) ( return `Hello $(name)`; )
Теперь, чтобы использовать код greet.js в другом файле, вы можете использовать следующий код:
// importing greetPerson from greet.js file import ( greetPerson ) from './greet.js'; // using greetPerson() defined in greet.js let displayName = greetPerson('Jack'); console.log(displayName); // Hello Jack
Вот,
greetPerson()
Функция в greet.js экспортируется с помощьюexport
ключевого словаexport function greetPerson(name) (… )
- Затем мы импортировали
greetPerson()
в другой файл, используяimport
ключевое слово. Чтобы импортировать функции, объекты и т. Д., Вам нужно обернуть их( )
.import ( greet ) from '/.greet.js';
Примечание. Из модуля можно получить доступ только к экспортированным функциям, объектам и т. Д. Вам необходимо использовать export
ключевое слово для конкретной функции, объектов и т. Д., Чтобы импортировать их и использовать в других файлах.
Экспорт нескольких объектов
Также можно экспортировать несколько объектов из модуля. Например,
В файле module.js
// exporting the variable export const name = 'JavaScript Program'; // exporting the function export function sum(x, y) ( return x + y; )
В основном файле
import ( name, sum ) from './module.js'; console.log(name); let add = sum(4, 9); console.log(add); // 13
Вот,
import ( name, sum ) from './module.js';
Это импортирует как переменную имени, так и sum()
функцию из файла module.js .
Переименование импорта и экспорта
Если объекты (переменные, функции и т. Д.), Которые вы хотите импортировать, уже присутствуют в вашем основном файле, программа может вести себя не так, как вы хотите. В этом случае программа берет значение из основного файла, а не из импортированного файла.
Чтобы избежать конфликтов имен, вы можете переименовать эти функции, объекты и т. Д. Во время экспорта или во время импорта.
1. Переименовать в модуле (файл экспорта)
// renaming import inside module.js export ( function1 as newName1, function2 as newName2 ); // when you want to use the module // import in the main file import ( newName1, newName2 ) from './module.js';
Здесь при экспорте функции из файла module.js ей присваиваются новые имена (здесь newName1 и newName2). Следовательно, при импорте этой функции новое имя используется для ссылки на эту функцию.
2. Переименуйте в импортируемом файле
// inside module.js export ( function1, function2 ); // when you want to use the module // import in the required file with different name import ( function1 as newName1, function2 as newName2 ) from './module.js';
Здесь при импорте функции новые имена (здесь newName1 и newName2) используются для имени функции. Теперь вы используете новые имена для ссылки на эти функции.
Экспорт по умолчанию
Вы также можете выполнить экспорт модуля по умолчанию. Например,
В файле greet.js :
// default export export default function greet(name) ( return `Hello $(name)`; ) export const age = 23;
Затем при импорте вы можете использовать:
import random_name from './greet.js';
При выполнении экспорта по умолчанию
- random_name импортируется из
greet.js
. Такrandom_name
как не находится вgreet.js
, экспорт по умолчанию (greet()
в данном случае) экспортируется какrandom_name
. - Вы можете напрямую использовать экспорт по умолчанию, не заключая фигурных скобок
()
.
Примечание . Файл может содержать несколько экспортированных файлов. Однако в файле может быть только один экспорт по умолчанию.
Модули всегда используют строгий режим
По умолчанию модули находятся в строгом режиме. Например,
// in greet.js function greet() ( // strict by default ) export greet();
Преимущество использования модуля
- Базу кода легче поддерживать, потому что разный код, имеющий разные функции, находится в разных файлах.
- Делает код многоразовым. Вы можете определить модуль и использовать его несколько раз в соответствии с вашими потребностями.
Использование импорта / экспорта может не поддерживаться в некоторых браузерах. Чтобы узнать больше, посетите страницу поддержки импорта / экспорта JavaScript.