为什么ember-cli使用extend而不是create

Why ember-cli uses extend instead of create?

本文关键字:create extend ember-cli 使用 为什么      更新时间:2023-09-26

在一个新的ember App中你先写:

var App = Ember.Application.create({
    test: 'foo',
    ...
});

在一个新的ember-cli应用中,你先写:

var App = Ember.Application.extend({
    test: 'foo',
    ...
});

为什么?

(在第二种情况下,我不能从控制器读取全局属性(App.test)。! ?)

这个问题其实和Ember.Object有很大关系。

.extend()创建一个扩展旧类的新类,并在传入的散列中定义类级别属性。

.create()创建一个类的新实例,并在传入的散列中定义对象级属性。

这就是为什么在第二种情况下你不能读取属性。如果你想这样做,你需要这样做:

var App = Ember.Application.extend({});
App.test = 'foo';

在普通的Ember应用程序中,您可以创建App对象的实例,因为您将直接使用它。

在Ember -cli生成的Ember应用程序中,您不需要创建App对象的实例,只需定义它的类(使用.extend())。这是因为你没有直接使用它,因为ember-cli想要这个类,所以它可以在内部实例化它之前对它做自己的事情。