Для того, чтобы jQuery подключался к require.js, jQuery должен быть загружен после require.js. Это работает отлично, но как только я включаю плагин jQuery под названием BlockUI, который делает некоторые странные вещи AMD (see bottom of BlockUI source), я получаю ошибку несоответствия. Я знаю, что BlockUI вызывает это, потому что ошибка несоответствия выплевывает весь источник, и все работает, если я удаляю BlockUI. Не имеет значения, используйте ли require.js или нет; достаточно просто включить библиотеку.Require.js + jQuery + BlockUI вызывает ошибку несоответствия, почему?
Смотрите эту jsfiddle: http://goo.gl/4tYE7
Переключитесь на вкладку Ресурсы на левой стороне, чтобы убедиться, что все скрипты загружаются в правильном порядке. Все хорошо? Хорошо, теперь откройте консоль. POW! Кровь везде!
Я не уверен, является ли это ошибкой Require.js или BlockUI (я делаю ставку BlockUI, поскольку он немного устарел), но есть ли обходной путь для этого? Что на самом деле происходит в нижней части BlockUI? jQuery предоставляет себя в качестве модуля AMD внизу источника, почему BlockUI делает подобные вещи?
У меня нет большого контроля над загрузкой BlockUI, потому что он загружен плагином Wordpress (Jigoshop), поэтому получение этого на работу весьма важно.
У меня нет много контроля над тем, как JQuery и BlockUI. Я использую Wordpress (хотя и не большой поклонник), а плагин под названием Jigoshop автоматически добавляет тег сценария BlockUI в заголовок вместе с некоторыми другими скриптами. jQuery также автоматически загружается Wordpress. Связанный jsfiddle - это в значительной степени то, что у меня происходит в моем заголовке. Мне жаль, что у меня больше контроля, но, к сожалению, я этого не делаю. В конце концов, мне все равно, что происходит в заголовке, потому что мои скрипты помещаются в нижний колонтитул. Все, что мне нужно для работы моих скриптов, - это загрузка jQuery. Вот когда все становится беспорядочным ... – qwerty
... Чтобы require.js использовал jQuery в качестве зависимости, мне нужно включить require перед jQuery, но если включить require.js перед jquery, все остальное в заголовке (BlockUI, для пример) попытается зацепить себя, вызывая ошибки. Если бы я мог загрузить require.js в нижний колонтитул и как-то зависеть от jQuery для загрузки других модулей, это было бы здорово. Вы видите мою проблему? – qwerty
Можете ли вы изменить плагин? Извлеките инъекцию скрипта и загрузите его самостоятельно, если потребуется? Если нет, зачем вы вообще нуждаетесь?Похоже на то, как твоя тема/плагины построены, не поддаются этому патту. –