我正在为Magento2开发一个模块,并且正在使用requirejs加载依赖于jquery的自定义javascript。我在requirejs-config.js中使用shim选项在自定义脚本和jquery之间设置此依赖关系。问题是未(始终)设置此依赖项。有时jQuery确实会在脚本之前加载,并且一切都很好,但有时会在脚本之后加载,从而导致脚本错误:
Uncaught ReferenceError: jQuery is not defined(anonymous function) @ jquery.easing.1.3.js:39
Uncaught ReferenceError: jQuery is not defined(anonymous function) @ jquery.flexslider-min.js:5
Uncaught TypeError: $(...).flexslider is not a function
参见下面我的requirejs-config.js的示例:
var config = {
map: {
'*': {
'flexslider': 'Vendor_Modulejs/jquery.flexslider-min',
'picturefill': 'Vendor_Modulejs/picturefill.min',
'easing': 'Vendor_Modulejs/jquery.easing.1.3',
'hoverintent': 'Vendor_Modulejs/jquery.hoverIntent',
'fitvids': 'Vendor_Modulejs/jquery.fitvids',
'vimeo': 'Vendor_Modulejs/jquery.vimeo.api.min'
}
},
shim: {
'flexslider': ['jquery'],
'picturefill': ['jquery'],
'easing': ['jquery'],
'hoverintent': ['jquery'],
'fitvids': ['jquery'],
'vimeo': ['jquery']
}
};
这是我的phtml文件中的javascript:
require(['jquery', 'domReady!', 'picturefill', 'flexslider', 'easing', 'hoverintent', 'fitvids', 'vimeo'], function($) {
"use strict";
// javascript here
});
我在这里做错什么,为什么不尊重shim选项,并且jQuery并非总是在其他脚本之前加载。