用@constructor和@static记录Ember应用



像YUIDocs这样的文档工具允许您在注释块中使用@class标记来识别和描述类(对象类)。每个已识别的类需要@static@constructor标记,定义如下:

  • @constructor -表示该类是可实例化的(创建的)
  • @static -指示您不应该实例化类新的。你可以静态调用所有类的方法。

在Ember中,你经常使用extend()创建子类。据我所知,这并没有创建一个类的新实例。然而,许多这样的定义(例如路由的控制器)是单例的,即使你使用extend()来定义它们。

因此,我的问题是:在ember应用程序中记录类的常见情况下,您会使用@constructor vs @static ?这样的例子有:

  • 初始化
  • 路由器
  • <
  • 适配器/gh>
  • 序列化器
  • <
  • 转换/gh><
  • 路线/gh><
  • 商店/gh>
  • <
  • 控制器/gh>
  • <
  • 组件/gh>
  • mixin

我在这里没有包括Handlebars helper,因为我相信它们实际上是方法,而不是类,但如果我错了,我会纠正这个问题。

  • 初始化器-在Ember内部的静态实例上调用方法。
  • 路由器-静态实例(虽然技术上它是创建的)
  • 适配器- @constructor
  • 序列化器- @constructor
  • 转换- @constructor,假设你在谈论DS。变换
  • Routes - @constructor
  • Store(这是Ember Data,他们初始化一个实例并将其连接到容器中)
  • Models - @constructor如果我们谈论的是DS。模型中,
  • 控制器- @constructor
  • 适配器- @constructor
  • Views - @constructor
  • Components - @constructor
  • Mixins - @constructorish, Ember可以创建Mixin,但不能创建实例。而且你不能使用extend来生成不同类型的mixins。

路由是类定义。当您使用extend时,您并没有创建一个单例,您只是定义了一个Ember可以使用的类。如果ember需要它,它将通过命名模式知道,并尝试使用您定义的类创建它。同样的模式在整个烬中使用。单例模式是默认模式,只有少数例外,比如itemController,或者当你在模板中使用render时,我相信还有很多其他的模式。

相关内容

  • 没有找到相关文章

最新更新