1

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

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

在 Ember 中,您经常使用extend(). 据我所知,这不会创建类的新实例。然而,许多这些定义(例如路由的控制器)是单例的,即使您使用extend()它们来定义它们。

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

  • 初始化器
  • 路由器
  • 适配器
  • 序列化器
  • 转型
  • 路线
  • 商店
  • 楷模
  • 控制器
  • 意见
  • 组件
  • 混合

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

4

1 回答 1

4
  • Initializers - 在 Ember 内部的静态实例上调用方法。
  • 路由器 - 静态实例(虽然从技术上讲它是创建的)
  • 适配器 - @constructor
  • 序列化器 - @constructor
  • 转换 - @constructor,假设您在谈论 DS.Transform
  • 路线 - @constructor
  • Store(这是 Ember Data,他们初始化一个实例并将其连接到容器中)
  • 模型 - @constructor 如果我们谈论的是 DS.Model,
  • 控制器 - @constructor
  • 适配器 - @constructor
  • 视图 - @constructor
  • 组件 - @constructor
  • Mixins - @constructorish,Ember.Mixin 可以创建,但实例不是。而且您不使用扩展来生成不同类型的混合。

路由是类定义。当您使用扩展时,您并没有创建单例,您只是定义了一个 Ember 可以使用的类。如果 ember 需要它,它会通过命名模式知道,它会尝试使用您定义的类来创建它。整个 Ember 都使用相同的模式。单例模式是默认模式,但有一些例外,例如itemController当您render在模板中使用时,我相信还有很多其他模式。

于 2014-07-24T01:42:39.960 回答