В настоящее время JQuery отлично работает с RequireJS. Теперь я попытался использовать плагин jScrollPane для JQuery. Этот плагин зависит от плагина mousewheel, поэтому оба должны быть загружены. Поскольку оба плагина поддерживают AMD, это не должно быть большой проблемой.Плагин JScrollPane JQuery с RequireJS
Я попробовал несколько решений, в том числе
require(['jquery.jscrollpane','jquery.mousewheel'], function(JScrollPane) {
$(function()
{
$('.scroll-pane').jScrollPane();
});
});
и
// At the beginning of main.js
requirejs.config({
"shim": {
"jquery.jscrollpane": ["jquery"],
"jquery.mousewheel": ["jquery"]
}
});
// Later in another script
define(["jquery", "jquery.mousewheel", "jquery.jscrollpane"], function($) {
$(function()
{
$('.scroll-pane').jScrollPane();
});
});
, но ничего не работает. Используя отладчик JavaScript в Chrome, функция обратного вызова никогда не вызывается и не возникает ошибка. Файлы называются jquery.jscrollpane.js и jquery.mousewheel.js и помещаются в ту же папку, что и RequireJS и JQuery.
Также должно быть возможно загрузить плагины только один раз, так как они просто расширяют JQuery, но я не нашел для этого примера.
Что я делаю неправильно?
Он работает, спасибо! Я использовал бы 'requirejs ([" jquery.mousewheel "," jquery.jscrollpane "], function() { $ (function() { $ ('. Scroll-pane'). JScrollPane(); }); }); '(который работает), поскольку JQuery уже определен глобально. Могут ли быть какие-либо проблемы с этим? –
Лично мне нравится быть явным в моих зависимостях и не полагаться на глобальные переменные. Если этот модуль изменится в будущем, чтобы больше не нуждаться в этих плагинах, тогда он сломается, поскольку jquery не будет загружен. – ekuusela