在清除缓存后应用程序的初始加载我得到一个jquery未定义bc应用程序试图在加载jquery之前加载jquery validate。刷新后所有内容都加载并正常工作。我以为我正确设置了但是我错过了什么?使用backbone.js,require.js和jquery。
Main.js:
require.config({
paths: {
'jquery': 'libs/jquery/jquery-min',
'underscore': 'libs/underscore/underscore-min',
'backbone': 'libs/backbone/backbone-min',
'validate': 'jquery.validate-1.11.1.min',
'templates': '../templates'
},
shim: {
jquery: {
exports: "jquery"
},
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: "backbone"
},
validate: {
deps: ['jquery'],
exports: "validate"
}
},
});
require([
'app'
], function(App){
App.initialize();
});
App.js
define([
'jquery',
'underscore',
'backbone',
'validate',
'router',
'scripts'
], function($, _, Backbone, validate, Router, scripts){
var initialize = function(){
Router.initialize();
};
return {
initialize: initialize
};
});
以下是我更新文件的内容,但仍然没有运气:
require.config({
paths: {
'jquery': 'libs/jquery/jquery-min',
'underscore': 'libs/underscore/underscore-min',
'backbone': 'libs/backbone/backbone-min',
'validate': 'jquery.validate-1.11.1.min',
'templates': '../templates'
},
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: "Backbone"
},
validate: {
deps: ['jquery', 'backbone'],
exports: "validate"
}
}
});
require([
'app'
], function(App){
App.initialize();
});
App.js
define([
'jquery',
'underscore',
'backbone',
'validate',
'router',
'scripts'
], function($, _, Backbone, validate, Router, scripts){
var initialize = function(){
Router.initialize();
};
return {
initialize: initialize
};
});
答案 0 :(得分:1)
从这里看到的jquery验证是一个由$ .validate()调用的插件。
在这种情况下,您不需要进行任何导出。
您可以尝试看看这对您是否有帮助:
shim: {
validate: {
deps: ['jquery']
}
}
您还可以查看类似的stackoverflow问题以供参考:How to make a jQuery plugin loadable with requirejs
答案 1 :(得分:0)
你在哪里得到了恐怖?你可以粘贴一个堆栈跟踪吗?
另外值得一试的是jquery的url。在浏览器中输入您的jquery网址(以“libs / jquery / jquery-min”结尾),看看是否可以找到它。
答案 2 :(得分:0)
exports
必须具有第三方脚本所期望的相同类型的情况。在这种情况下:jQuery
和Backbone
require.config({
paths: {
'jquery': 'libs/jquery/jquery-min',
'underscore': 'libs/underscore/underscore-min',
'backbone': 'libs/backbone/backbone-min',
'validate': 'jquery.validate-1.11.1.min',
'templates': '../templates'
},
shim: {
jquery: {
exports: "jQuery"
},
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: "Backbone"
},
validate: {
deps: ['jquery'],
exports: "validate"
}
},
});
答案 3 :(得分:0)
exports
属性需要匹配全局属性名称 - 对于jQuery,它必须是$
或jQuery
。对于主干,它必须是Backbone
。
你也不需要填充jQuery - 它已经通过命名定义与AMD兼容了很长一段时间。见https://github.com/jquery/jquery/blob/master/src/exports.js#L15-L17
答案 4 :(得分:-3)
感谢您的回复,我相信您的反馈修复了我本来会遇到的其他一些问题。看起来我正在使用一个非常旧版本的require.js 0.27.0并升级到最新修复的jquery问题。