Я пишу script, который должен быть встроен на сторонние сайты, чтобы добавить к ним функциональность. Недавно я разорвал свой довольно беспорядочный пользовательский код загрузчика и начал заменять его на requirejs. Одна из библиотек, которые могут быть загружены для меня (зависит от некоторых параметров, переданных в), - это jQuery.
Это хорошо работает, пока мой script не включен на страницу, в которой уже включен jQuery, и в этом случае то, что, как представляется, происходит, - это некоторые плагины для частичной загрузки, requirejs загружает jQuery поверх версии страницы, а плагины быстро ломаются.
Спросить клиентов переписать свои страницы просто для использования этого script не может быть и речи, поэтому я хотел бы сделать это, если jQuery уже загружен, если он есть, пропустите загрузку через requirejs и просто используйте уже загруженный (это, возможно, откроет мне случайные случаи и ошибки, когда они используют гораздо более старую версию jQuery, но у меня нет большого выбора).
То, что я думал, что я сделаю, это написать новый модуль, который сначала увидит, загружен ли jQuery, если он есть, просто экспортируйте объект jQuery, если он не будет, затем загрузите его, а затем выполните экспорт. Тем не менее, мне кажется, что меня загнали в тупик, так как функция определения для модуля, похоже, должна быть синхронной для работы, поэтому я не могу отключиться и загрузить еще один script, который будет асинхронным, а затем добавить экспорт в requirejs.
Я что-то упустил в документах? Я пытаюсь сделать невозможным?