Require загружает модуль, даже если он включен в сборку
Я работаю над довольно сложным проектом Require; В основе этого проекта лежит кодовая база стороннего видеоплеера, вокруг которой мы создаем приложение. В настоящее время я работаю над процессом производства, используя оптимизатор Require.
Оптимизатор работает отлично, но когда я использую приложение со "встроенным" JS, Require настаивает на загрузке стороннего модуля, вставив дополнительный скрипт-тег. Я искал скомпилированный JS и подтвердил, что модуль был включен в сборку; все же это, кажется, не распознается во время выполнения.
Для этого модуля требуется сторонний модуль:
define(['models/Widget','amp_lib'], function(Widget) {
// Housekeeping/configuration
// Nothing to return here
})
Модуль amp_lib определен в основном конфиге:
require.config({
paths: {
amp_lib: 'path/to/module/src'
}
});
Может кто-нибудь помочь мне понять, как Require определяет, был ли загружен определенный модуль или нет? Я целый день ковыряюсь в самом Require, надеясь выяснить, где принимается это решение, но безрезультатно.
1 ответ
Как указано выше:
Я нашел проблему сегодня. Оказывается, что сторонний модуль, который мы получаем, использует несколько служебных библиотек, одна из которых совместима с AMD и, таким образом, имеет собственную функцию define() при обнаружении загрузчика. Поэтому при сборке оптимизатор определял именно эту библиотеку как модуль, а не всю кодовую базу, что, в свою очередь, вызывало перезагрузку модуля во время выполнения. Извлеченный урок: будьте осторожны с добавлением сторонних материалов в проект Require.