我试图在项目中一起使用RequireJS,Backbone,Firebase和Backfire,并且真的很难入门。下面是一个简单的例子:如何将RequireJS与Backbone,Firebase和Backfire一起使用
main.js
require.config({
paths: {
backbone: 'backbone',
backfire: 'backfire',
firebase: 'firebase',
underscore: 'underscore',
jquery: 'jquery',
test: 'test'
},
shim: {
'firebase': {
exports: 'Firebase'
},
'underscore': {
exports: '_'
},
'backbone': {
deps: [ 'underscore', 'jquery' ],
exports: 'Backbone'
},
'backfire': {
deps: [ 'backbone', 'firebase', 'underscore' ]
}
}
});
requirejs([ 'test' ]);
test.js
define([ 'backbone', 'firebase', 'backfire' ], function(Backbone, Firebase){
var Person = Backbone.Model.extend({
defaults: function() {
return {
fName: 'John',
lName: 'Doe'
};
}
});
var database = Backbone.Firebase.Collection.extend({
model: Person,
firebase: new Firebase('https://ref.firebaseio.com')
});
console.log(typeof database); // function
// The following throws "Uncaught TypeError: undefined is not a function"
database.add(new Person({ fName: 'Matthew', lName: 'Hasbach' }));
});
任何帮助,您可以提供将不胜感激。
我相当肯定的是,由于火力地堡内部做了自己的一些要求,你需要等待火力地堡对象被实例化。 Requirejs有一个测试方法(我不记得语法)等待一个对象在被认为被加载之前初始化。你需要利用它。 – Kato
@加藤下午好。在** test.js **中执行定义回调函数时,'Firebase''完全实例化。我通过完全绕过''Backbone''',创建一个'''新的Firebase'''并设置一个测试值来测试它。请看我修改的问题。 – mjhasbach