ES6 и оконные / глобальные переменные

Я работаю с модулями es6. В некоторых из них я использую lodash. Мой вопрос - возможно ли загрузить lodash как глобальную переменную, или он должен быть импортирован во все файлы отдельно? Я попробовал это в моем инициализаторе:

import lodash from 'lodash';
window._ = lodash;

Также так:

window._ = require('lodash');

Но это не работает. В моих модулях я получаю ошибки при использовании, например, _.truncate:

TypeError: Невозможно прочитать свойство 'truncate' из неопределенного

1 ответ

Решение

Есть 3 способа сделать так, чтобы вы видели, что используете webpack.

  1. window объект все еще доступен. Как и в вашем примере, вы должны сначала убедиться, что инициализатор загружен, а затем вы можете прикрепить подчеркивание к объекту окна, как вы это сделали, затем в вашем модуле вы можете использовать его как window._.truncate, Вы можете увидеть недостатки здесь: 1) Существует зависимость порядка загрузки. 2) Существует зависимость от оконного объекта. 3) Использование не приятно.

  2. Вы можете импортировать underscore непосредственно для модуля необходимо.

  3. С помощью веб-пакета вы можете определить глобальную переменную, определив плагин https://webpack.js.org/plugins/define-plugin/ Затем в каждом модуле вы можете использовать _.truncate по желанию.

Если вам нужен только модуль время от времени, #2 - это путь. Если вы планируете использовать его часто, то №3 будет более удобным. #1 всегда безобразен, но в редких случаях такой обходной путь может помочь, хотя ваш случай, по-видимому, не так.

Другие вопросы по тегам