Что такое export?
Оператор export
используется при создании модулей JavaScript для экспорта функций, объектов или примитивных значений из модуля, чтобы они могли использоваться другими программами с оператором import
.
Таким образом, в основном он используется в файлах JavaScript, чтобы сделать объекты видимыми для других файлов (модулей).
Есть 3 вида экспорта
1 - Именованный экспорт (несколько на модуль)
2 - Экспорт по умолчанию (по одному на модуль)
3 - Смешанный именованный экспорт и экспорт по умолчанию
Именованный экспорт
Именованный экспорт - это когда вам нужно сделать видимой только функцию или объект, оставив остальную часть файла приватной.
пример lib.js
export function square(x) { return x * x }
это можно использовать в другом файле следующим образом:
main.js
import {square} from 'lib' var result = square(4) console.log(result == 16)
Как видите, именованный экспорт затем импортируется в другой скрипт в фигурных скобках.
Примечание. В приведенном выше примере lib.js находится в том же каталоге, что и main.js. В противном случае, если он находится в другом каталоге, путь должен быть относительно текущей папки.
Обратите внимание также на то, что расширение .js
опущено в имени файла lib.js при импорте, тем не менее оно относится к файлу.
Скажем, у нас есть следующая структура папок
/ /main.js /libs/lib.js
в этом случае в main.js оператор импорта должен быть
import {square} from './libs/lib'
В другой статье я объясню, как настроить псевдонимы путей с помощью babel.
Экспорт по умолчанию
Экспорт по умолчанию очень похож на именованный экспорт. Другое отличие состоит в том, что то, что экспортируется, помечается как default
, и для каждого модуля может быть только один экспорт по умолчанию.
Чтобы проиллюстрировать это на примере:
lib.js
export default function (x) { return x * x }
Примечание: у функции нет имени и есть ключевое слово default
.
Теперь в main.js
import myNameForTheImportedSquareFunction from 'lib' var result = myNameForTheImportedSquareFunction(4) console.log(result == 16)
Разница на этой стороне совместной работы модулей заключается в том, что импортированный модуль не заключен в фигурные скобки, и вы можете называть его как угодно.
Смешанный экспорт
Смешанный экспорт - это не что иное, как использование обоих методов, показанных выше, в одном скрипте.
Просто быстрый пример:
lib.js
export default function (x) { return x * x } export function square(x) { return x * x }
в main.js мы должны импортировать эти функции следующим образом:
import mySquareFunction, {square} from 'lib' var squared = square(4) console.log(squared == 16) var defaultSquared = mySquareFunction(5) console.log(defaultSquared == 25)
Еще одна вещь: может быть несколько именованных импортов из одного модуля и только один модуль по умолчанию.
Это правильно
import mySquareFunction, {square, min, max, sum, divide} from 'myMathLib'
Это не правильно
import mySquareFunction, myMin, myMax, {square, min, max, sum, divide} from 'myMathLib'