在定义模型时,使用DS.model、Ember.model还是Ember.Object?

20
这个视频教程:http://www.embercasts.com/episodes/getting-started-with-ember-model,使用Ember.model创建了一个人物模型,如下所示:
App.Person = Ember.Model.extend({
    name : Ember.attr()
})


这个例子使用 Ember.Object,可以在文档中找到。

App.Person = Ember.Object.extend({
    say : function(thing) {
        alert(thing);
    }
});

此外,在“定义模型”一节下,提供了一个使用DS.model的示例。请参考该链接
App.Person = DS.Model.extend({
  firstName: DS.attr('string'),
  lastName: DS.attr('string'),
  birthday: DS.attr('date'),

  fullName: function() {
    return this.get('firstName') + ' ' + this.get('lastName');
  }.property('firstName', 'lastName')
});

这三者有何区别,如何选择使用哪一个?
1个回答

31

Ember.Object - 所有对象的母亲

正如在这篇非常生动形象的 文章 中所述:

几乎每个 Ember.js 中的对象都是从一个共同的对象派生而来的:Ember.Object。这个对象被用作视图、控制器、模型甚至是整个应用程序的基础。

这个简单的架构决策是 Ember 可以保持一致性的原因之一。因为每个对象都是从相同的核心对象派生出来的,它们共享一些核心功能。每个 Ember 对象都可以观察其他对象的属性,将其属性绑定到其他对象的属性,指定和更新计算属性等等。

现在让我们来了解一下不同之处以及根据您的用例何时使用它们。

Ember.Object

  • Ember.js是所有Ember对象的主要类。它是Ember.CoreObject的子类,应用了Ember.Observable mixin。
  • 你可以使用它创建任意的对象,该类也是使数据绑定成为可能的基础。

Ember.Model

  • ember-model 库使用并扩展 Ember.Object
  • 如果您使用 ember-model 作为持久化库,则使用此类来定义模型。

DS.Model

  • 它被ember-data所使用,是ORM系统的基类,同时也继承自Ember.Object
  • 当您使用ember-data作为持久化库来定义模型和关系等时,您将使用它。

希望这有所帮助。


什么是Ember一直在谈论的持久性库或“数据持久层”? - Jatin
@Jatin,当你有一个Web应用程序,用户可以创建/更新/删除对象,比如帖子和评论,你很快就需要将这些对象的状态存储在某个地方(例如数据库或使用本地存储),为了实现这一点,你需要编写代码来完成这个“持久化”任务。使用Ember Data或Ember Model可以为你提供这样的基础,这样你就需要写更少的代码来使你的应用程序能够存储它的状态。 - intuitivepixel
@Jatin,“persistence”与“保存”是同义词。 - Nelu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接