У меня есть несколько файлов JavaScript в моем веб-приложении, которые ранее были загружены через теги <script>
в порядке относительных зависимостей. Теперь я реорганизую их через require.js, чтобы накопить и минифицировать их для производства.
Для начала я хотел бы просто загрузить все файлы в глобальный (оконный) контекст, пока без инкапсуляции AMD:
require([
'jquery'], function() {
require([
'jquery-ui'], function() {
require([
'jquery-ui.touch-punch',
// [...]
]);
});
});
Идея здесь в том, что 'jquery'
определяет глобальную (контекст окна) переменную jQuery
, 'jquery-ui'
устанавливает jQuery.ui
, а 'jquery-ui.touch-punch'
изменяет jQuery.ui
(для лучшей поддержки сенсорного ввода).
Это хорошо работает, когда работает как есть, то есть без оптимизации. Однако после компиляции в один файл и минимизации с помощью оптимизатора RequireJS возникает следующая ошибка:
Uncaught TypeError: Cannot read property 'mouse' of undefined
Это происходит на линии, пытающейся получить доступ к jQuery.ui.mouse
.
Внутри консоли браузера jQuery
правильно установлено в контексте окна, но jQuery.ui
не определено. Однако ручное выполнение require(['jquery-ui'])
устанавливает jQuery.ui
как и ожидалось.
Похоже, что пользовательский интерфейс jQuery после оптимизации ведет себя по-другому, но я не понимаю, как именно и почему. Что я делаю не так?