我一直在寻找有关我们如何在 Backbone 中建立关系的信息,并遇到了以下两个不错的插件:
两者似乎都存在了两年多,而且似乎很稳定。但是,Backbone-relational
在以下方面优于 Backbone-associations
:
- 提供数据库中几乎所有的关系,例如
一对一、一对多、多对一
- 乍一看不错的文档(类似于
Backbone.js
)
因为我没有时间广泛地研究这两个插件,所以我想从有经验的人那里了解以下事情:
- 是否都支持 AMD(如 Requirejs)?
- 将插件与后端服务器(如 Ruby on Rails)结合使用是否容易?
- 实现多态关系有多容易?
最佳答案
最大的区别是 Backbone-relational
禁止创建具有相同 ID 的同一模型的多个实例。考虑:
let Person = Backbone.RelationalModel.extend({
relations: [
type: Backbone.HasMany,
key: 'likes_movies',
relatedModel: 'Movie'
]
});
let peter = new Person({
likes_movies: [{id: 1, title: 'Fargo'}, {id: 2, title: 'Adams Family'}]
);
let john = new Person({
likes_movies: [{id: 1, title: 'Fargo'}, {id: 2, title: 'Adams Family'}]
);
// Change title of one of Peter's movies
peter.get('likes_movies').get(1).set('title', 'Fargo 2 (Sequel)');
// John's corresponding movie will have changed its name
console.log(john.get('likes_movies').get(1)); // Fargo 2 (Sequel)
如果为 Backbone-associations
重写,John 的电影名称不会改变。这可以被视为一个特点或缺点,具体取决于您如何看待它。
除此之外,这两个库非常相似,除了 Backbone-associations
的开发似乎在将近一年前就停止了。
关于javascript - Backbone 关联与 Backbone 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25257010/