所以我正在使用jquery.flot和jquery.flot.selection,因为define({...异步加载模块我遇到了问题,因为选择插件试图将自己推入$ .plot.plugins(这是由jquery.flot创建的)但是那时$ .plot.plugins仍未定义。
我发现require.config中的“shim”参数可以帮助我,但我没有运气... 所以这是破败的...... jquery.flot创建$ .plot 和jquery.flot.selection将自己添加到$ .plot.plugins
我尝试过的......
shim:{
'js/lib/jquery.flot':{
exports:'$.plot'
},
'js/lib/jquery.flot.selection':{
deps:['js/lib/jquery.flot']
}
}
也
shim:{
'js/lib/jquery.flot.selection':['js/lib/jquery.flot']
}
我的插件看起来像这样..
define(['jquery','lib/jquery.flot','lib/jquery.flot.selection'], function() {
(function($) {
// jQuery plugin definition
.....
我也试过
define(['jquery'],function(){
require[('js/lib/jquery.flot.selection'],function(){
//jQuery plugin definition
...
我该怎么做???
答案 0 :(得分:5)
对于将来遇到这种情况的人来说,在诊断问题时,RequireJS可能会有点不透明。 Here's一个带有jquery.flot和jquery.flot.selection的RequireJS 2的工作示例,没有使用模块。
有点难以分辨出这个例子和上面的问题有什么不同,因此不透明!
require.config({
shim: {
'jquery': {
exports: '$'
},
'jquery.flot': {
deps: ['jquery'],
exports: '$.plot'
},
'jquery.flot.selection': {
deps: ['jquery.flot']
}
},
paths: {
'jquery': '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min',
'jquery.flot': '//cdnjs.cloudflare.com/ajax/libs/flot/0.8.1/jquery.flot.min',
'jquery.flot.selection': 'https://raw.github.com/flot/flot/master/jquery.flot.selection'
}
});
require(['jquery', 'jquery.flot', 'jquery.flot.selection'], function ($) {
// jQuery plugin definition
console.log($.plot);
$('#x').text($.plot.plugins);
});