如何确保Magento 2中的RequireJS在加载其他脚本之前加载jQuery?我发现嵌套需要解决这个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何确保Magento 2中的RequireJS在加载其他脚本之前加载jQuery?我发现嵌套需要解决这个问题相关的知识,希望对你有一定的参考价值。
我正在尝试加载一个需要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被加载?
答案
ScandiLazy
需要jQuery才能工作,所以你必须告诉RequireJS使用jQuery
将ScandiLazy
设置为shim
的依赖(更多这里是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();
});
以上是关于如何确保Magento 2中的RequireJS在加载其他脚本之前加载jQuery?我发现嵌套需要解决这个问题的主要内容,如果未能解决你的问题,请参考以下文章