不知怎的,我总是收到这个错误:
未捕获的ReferenceError:未定义jQuery
我的印象是jQuery(通过CDN加载)需要更多时间加载(通过Chrome上的网络标签确认)。我在我的PC上本地运行,这就是为什么CDN调用总是比库更长。但是在加载jQuery之前,是不是需要等待jQuery加载其他库之后呢?
我的boot.js:
(function(){
requirejs.config({
baseUrl: '/assets/js/',
paths: {
'lib': 'lib/',
'src': 'src/',
'jquery': [
'//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min',
'lib/jquery-1.9.1.min'
],
'mootools': 'lib/mootools-core-1.4.5',
'class.mutators': 'lib/Class.Mutators.jQuery'
//'order': 'assets/js/lib/order',
},
shim: {
'class.mutators': {
deps: [
'mootools'
],
exports: 'classmutators'
},
'underscore': {
exports: '_'
}
},
waitSeconds: 15
});
requirejs([
'jquery',
'src/app-require'
], function($){
$(document).ready(function(){
var App = new $.App($('body'));
});
});
})();
我的app-require.js:
define([
'mootools',
'class.mutators',
'src/Tracker',
'lib/jquery.easing.1.3',
'lib/nivo/jquery.nivo.slider.pack',
'lib/isotope/jquery.isotope.min',
'lib/waypoints.min'
], function() {
var className = 'App';
//--
return $[className] = new Class({
jQuery: className,
Implements: [Options, Events],
options: {},
//-- init
//---------------------------------------------
initialize: function(el, options) {
...
},
...
});
});
有什么想法吗?
答案 0 :(得分:4)
jQuery没有任何依赖项。你应该在mutator的垫片依赖项中添加它:
shim: {
'class.mutators': {
deps: [
'jquery',
'mootools'
],
exports: 'classmutators'
},
'underscore': {
exports: '_'
}
},
以下是如何使用shim处理jQuery依赖关系的官方示例:https://github.com/requirejs/example-jquery-shim#how-its-set-up