我一直在寻找有关如何在Backbone中建立关系的信息,并且遇到了以下两个不错的插件:
两者似乎都存在了两年多,似乎很稳定。但是,Backbone-relational
在以下条款中优于Backbone-associations
:
one-to-one, one-to-many, many-to-one
Backbone.js
)因为,我还没有时间广泛浏览这两个插件,我想知道有经验的人跟踪事情:
答案 0 :(得分:2)
最大的区别是Backbone-relational
fobids创建具有相同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
的开发似乎已经在一年前停止了。
答案 1 :(得分:1)
实际上,基于GitHub脉冲(活动指标),Backbone-relational社区似乎更加活跃。
答案 2 :(得分:0)
当我在寻找像EmberData或Restangular for Backbone这样的东西时,我研究了这两个库。
这两个库都试图弥补主要的Backbone弱点:正确处理Rest API Restful Resources。
事实上,Backbone每次需要渲染时都会促进新模型的创建(而不是重复使用在应用程序中其他地方进行其他渲染的实例)。
然后会出现一些不一致的原因,因为某些模型更新不会在Web应用程序的任何位置传播
然后需要骨干模型实例的缓存。
Backbone Relational提供了这样的缓存,但Backbone Association没有。
此外,两者都重新实现了Backbone的代码方法(set,get,reset,trigger),因此它们与Backbone紧密耦合。
这可能会使Backbone库迁移变得复杂,特别是如果你在Backbone(Marionnette,Thorax,Chaplin,...)上使用另一个MVC框架
Backbone Association在代码行方面比Backbone Relational更轻(800 vs 2000)。
另一个轻量级(但使用较少)替代方案是“Backbone SuperModel”:http://pathable.github.io/supermodel/
在我这边,