Мне была предоставлена библиотека дизайна из большого клиента сотрудничества, построенного с использованием Bootstrap 3 и Require.js. Он очень надежный и хорошо построенный с различными скриптами, используя Require.js для загрузки jQuery. Проблема в том, что Drupal уже загрузил jQuery, а двойная нагрузка приводит к сбою некоторых элементов. Если я удалю все вызовы Require.js, материал Drupal jQuery отлично работает. Если я удалю файл Drupal jQuery базы, все вещи, использующие материал Require.js, отлично работают. Вот варианты я рассмотрел:Drupal и Require.js не играют хорошо - двойная загрузка jQuery
- Stop JQuery от загрузки с Drupal, использование требует, чтобы загрузить JQuery на каждой странице - я не пробовал еще, но это только кажется неправильным. Я думаю, что я могу удалить jQuery с hook_library_alter() в моей теме? Удивление, если кто-то пробовал это ... Мои интерфейсные и административные экраны фактически используют две разные темы, поэтому я думаю, что мне придется изменить оба.
- Остановить jQuery от загрузки с помощью Require.js - я пробовал это, и ни одна из других библиотек, которые загружаются с require.js, не может найти запрос, если он не загружен Require.js, поэтому я не думаю, что этот параметр работает. Это мой первый раз с использованием require.js, так что, может быть, есть какое-то удовольствие для этого, я не понял?
- Добавить все библиотеки на сайт с помощью Drupal - Это похоже на массу грязной работы, так как мне пришлось бы удалить все зависимости require.js в библиотеке, и есть ожидание того, что мы не будем изменять библиотеку/фреймворк, так что внедрение новых выпусков легко.
Любые другие рекомендации?
UPDATE в ответ Никоса Параскевопулос:
Я установил Drupal, чтобы загрузить версию JQuery, поставляемой вместе с пакетом require.js и Drupal доволен этим. Так что теперь на каждой странице я нагружении в следующем порядке:
/components/jquery/jquery.js
/misc/jquery.once.js
/misc/drupal.js
/components/requirejs/require.js
/js/require.config.js
Мой requires.config выглядит следующим образом:
requirejs.config({
baseUrl: "./",
paths: {
.....
jquery:
"components/jquery/jquery", "jquery-csv": "components/jquery-csv/src/jquery.csv",
"jqueryui-sortable-amd": "components/jqueryui-sortable-amd/js/jquery-ui-1.10.2.custom",
.....
},
shim: {
"jquery-backstretch": [
"jquery"
],
masonry: [
"jquery"
],
OpenLayers: {
exports: "OpenLayers"
},
"jquery-csv": [
"jquery"
]
}
});
Если удалить запись Jquery из путей, а также добавить:
jquery: {
exports: 'jQuery' // NOTE THE CASE OF 'Q', THIS IS THE GLOBAL NAME
}
я сразу получаю ошибки, такие как:
Uncaught ошибка: ошибка сценария для: jqueryui-сортировкой-драм
Что имеет смысл, поскольку все они были объявлены вместе. uggg.