Не удается загрузить плагин inview jQuery с помощью RequireJS
Я пытаюсь использовать плагин inview в моем приложении, которое использует RequireJS для загрузки скриптов и в настоящее время создается / оптимизируется с помощью Almond. Я получаю консольную ошибку:
TypeError: 'undefined' is not an object (evaluating 'global.jquery.inview')
Который, кажется, прибывает из shim, который требует, добавляет к концу файла inview:
define("jquery.inview", ["jquery"], (function (global) {
return function () {
var ret, fn;
return ret || global.jquery.inview;
};
}(this)));
Мой требуемый конфиг выглядит следующим образом:
require.config({
paths: {
'jquery': '../../bower_components/jquery/dist/jquery',
'text': '../../bower_components/requirejs-text/text',
'tweenmax': '../../bower_components/greensock/src/uncompressed/TweenMax',
'jquery.inview': '../../bower_components/jquery.inview/jquery.inview'
},
shim: {
"jquery.inview": {
deps: ['jquery'],
exports: 'jquery.inview'
}
}
});
Любая помощь высоко ценится!
1 ответ
jquery.inview
это плагин JQuery Поэтому он устанавливает себя как плагины, изменяя $
, Когда вы говорите RequireJS, что он экспортирует jquery.inview
RequireJS пытается разрешить jquery.inview
в глобальном пространстве, которое не работает, потому что jQuery доступен в глобальном пространстве как $
или же jQuery
а не как jquery
,
Вы могли бы оставить exports
или установить его на то, что jquery.inview
действительно определяет. Например, читая код jquery.inview
Я вижу, что это устанавливает $.event.special.inview
так что вы можете использовать это в своем exports
,
Если вам интересно, для плагинов jQuery exports
значение полезно только для бухгалтерии RequireJS. Вы сами не получаете доступ к плагину через экспортируемое им значение, а через API, предоставляемый через jQuery.