ES6 и оконные / глобальные переменные
Я работаю с модулями es6. В некоторых из них я использую lodash. Мой вопрос - возможно ли загрузить lodash как глобальную переменную, или он должен быть импортирован во все файлы отдельно? Я попробовал это в моем инициализаторе:
import lodash from 'lodash';
window._ = lodash;
Также так:
window._ = require('lodash');
Но это не работает. В моих модулях я получаю ошибки при использовании, например, _.truncate:
TypeError: Невозможно прочитать свойство 'truncate' из неопределенного
1 ответ
Есть 3 способа сделать так, чтобы вы видели, что используете webpack.
window
объект все еще доступен. Как и в вашем примере, вы должны сначала убедиться, что инициализатор загружен, а затем вы можете прикрепить подчеркивание к объекту окна, как вы это сделали, затем в вашем модуле вы можете использовать его какwindow._.truncate
, Вы можете увидеть недостатки здесь: 1) Существует зависимость порядка загрузки. 2) Существует зависимость от оконного объекта. 3) Использование не приятно.Вы можете импортировать
underscore
непосредственно для модуля необходимо.С помощью веб-пакета вы можете определить глобальную переменную, определив плагин https://webpack.js.org/plugins/define-plugin/ Затем в каждом модуле вы можете использовать
_.truncate
по желанию.
Если вам нужен только модуль время от времени, #2 - это путь. Если вы планируете использовать его часто, то №3 будет более удобным. #1 всегда безобразен, но в редких случаях такой обходной путь может помочь, хотя ваш случай, по-видимому, не так.