Ответ 1
Когда вам нужно импортировать что-то, что ничего не экспортирует, а делает что-то еще, это только модуль с побочным эффектом. Вы импортируете его только для его инициализации.
Чистые и не чистые модули
Если вы думаете о модулях как о функциях, модуль, который влияет только на объем, экспортируя его содержимое, похож на функцию, которая всегда возвращает одно и то же (чистая функция без параметров). Независимо от того, сколько раз вы будете импортировать реакцию 15.01, вы всегда получите объект, который содержит те же методы.
Модуль с побочными эффектами - это тот, который изменяет область действия другими способами, а затем возвращает что-то, и это эффекты не всегда предсказуемы и могут быть затронуты внешними силами (нечистая функция). Например, polyfill может ничего не делать, поскольку обнаруживает, что функция, которую он включает, уже поддерживается браузером.
Примеры побочных эффектов:
- Angular привязывается к глобальному объекту
window
, но не экспортирует что-нибудь. - A polyfill, который позволяет использовать функции ES6 в браузерах, которые не поддерживайте их, например babel polyfill является побочным эффектом.
- Многие плагины jQuery присоединяются к глобальному объекту jQuery.
- Аналитические модули, которые работают в фоновом режиме, контролируют взаимодействие с пользователем и отправляют данные на сервер.
- Импорт CSS в webpack можно считать побочным эффектом, если вы не используете CSS-модули.