如何使用Require.js的shim配置加载Backbone.io,Backbone和socket.io?
似乎其他所有内容都正常加载,只是当我尝试运行Backbone.io.connect()时,我得到“Backbone未定义”。 Backbone.io的服务方式与socket.io服务器创建的/socket.io目录中的socket.io相同。
requirejs.config({
baseUrl: 'javascripts/lib',
paths: {
jquery: 'jquery.min',
bootstrap: 'bootstrap.min'
},
shim : {
'underscore': {
exports: '_'
},
'backbone': {
deps: ["underscore", "jquery"],
exports: 'Backbone'
},
'bootstrap': {
deps: ["jquery"]
}
}
})
requirejs(['jquery',
'underscore',
'backbone',
'bootstrap',
'../socket.io/socket.io.js',
'../socket.io/backbone.io.js'
], function($,
_,
Backbone,
bootstrap){
Backbone.io.connect();
}
小更新:
似乎Backbone在主要的requirejs函数中定义得很好,它只是在需要Backbone在初始化之前定义。我如何初始化Backbone对象,然后是backbone.io库,以便它可以做到这一点?
答案 0 :(得分:3)
尝试在路径中包含骨干
paths: {
jquery: 'jquery.min',
bootstrap: 'bootstrap.min',
underscore: '<name of underscore file>',
backbone: '<name of backbone file>'
},
我认为应该这样做。切记不要在文件名中包含.js。 此外,如果backbone.io依赖于主干,则可能需要在垫片下添加依赖项。
shim : {
'underscore': {
exports: '_'
},
'backbone': {
deps: ["underscore", "jquery"],
exports: 'Backbone'
},
'bootstrap': {
deps: ["jquery"]
},
'backbone.io': {
deps: ["backbone"]
}
}
答案 1 :(得分:2)
以下是它最终为我工作的方式:
感谢兰德兰,你的答案帮助最大。
requirejs.config({
baseUrl: 'javascripts/lib',
paths: {
jquery: 'jquery.min',
bootstrap: 'bootstrap.min',
backbone: 'backbone',
underscore: 'underscore',
socketio: '../../socket.io/socket.io',
backboneio: '../../socket.io/backbone.io'
},
shim : {
'underscore': {
exports: '_'
},
'backbone': {
deps: ["underscore", "jquery"],
exports: 'Backbone'
},
'bootstrap': {
deps: ["jquery"],
exports: 'bootstrap'
},
'backboneio': {
deps: ["backbone", "socketio"]
}
}
})
requirejs(['jquery',
'underscore',
'backbone',
'bootstrap',
'socketio',
'backboneio'
], function($,
_,
Backbone,
bootstrap,
titlealert,
waitForImages){
}