我正在尝试加载一个需要jQuery才能运行的延迟加载程序插件。如果我这样写我的脚本:
require([
"jquery",
"ScandiLazy",
], function ($) {
jQuery('.category-products .lazy').lazy();
});我得到了:
"jquery.lazy.min.js:43 Uncaught TypeError: Cannot read property 'fn' of undefined",然后是:
Uncaught TypeError: jQuery(...).lazy is not a function这是一个错误,因为没有加载jQuery。
但如果我嵌套了要求:
require([ "jquery"], function ($) {
require([ "ScandiLazy"], function ($) {
jQuery('.category-products .lazy').lazy();
});
});然后它就完美地工作了。
但是为了让它工作而嵌套请求是错误的,这实际上是一种正确的方式吗?
如果这是不正确的,那么有什么方法可以确保在加载ScandiLazy延迟加载插件之前已经加载了jQuery?
发布于 2018-09-18 03:43:33
ScandiLazy需要jQuery才能工作,所以您必须告诉RequireJS使用shim将jQuery设置为ScandiLazy的依赖项(这里更多的是https://requirejs.org/docs/api.html#config-shim)。快速示例如何解决此问题:
requirejs.config({ // configure RequireJS first
shim: {
'path/to/ScandiLazy': ['jquery']
}
});
require([ // load modules
"jquery",
"ScandiLazy",
], function ($) {
jQuery('.category-products .lazy').lazy();
});发布于 2019-09-13 03:08:19
我认为在M2中正确的方法是将其添加到模块/主题的requirejs-config.js中
var config = {
shim: {
'ScandiLazy': ['jQuery']
},
map: {
...
},
};https://stackoverflow.com/questions/52345840
复制相似问题