Class 使用@constructor和@static记录余烬应用程序

Class 使用@constructor和@static记录余烬应用程序,class,ember.js,documentation,ember-data,yuidoc,Class,Ember.js,Documentation,Ember Data,Yuidoc,像YUIDocs这样的文档工具允许您使用注释块中的@class标记来识别和描述类(对象类)。每个识别的类都需要一个@static或@constructor标记,定义如下: @constructor-表示类是可实例化的(已创建) 使用新关键字) @static-表示不应使用 新的。您可以静态调用类的所有方法 在Ember中,您经常使用extend()创建子类。据我所知,这不会创建类的新实例。但是,尽管您使用extend()来定义这些定义,但其中许多定义(例如路线的控制器)都是单例的 因此,我的

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

  • @constructor
    -表示类是可实例化的(已创建) 使用新关键字)
  • @static
    -表示不应使用 新的。您可以静态调用类的所有方法
在Ember中,您经常使用
extend()
创建子类。据我所知,这不会创建类的新实例。但是,尽管您使用
extend()
来定义这些定义,但其中许多定义(例如路线的控制器)都是单例的

因此,我的问题是:在余烬应用程序中记录类的常见情况下,您会使用
@constructor
还是
@static
?例如:

  • 初始化者
  • 路由器
  • 适配器
  • 序列化程序
  • 转变
  • 路线
  • 商店
  • 模型
  • 控制器
  • 观点
  • 组成部分
  • 混血儿
我这里不包括把手助手,因为我相信它们实际上是方法,而不是类,但如果我错了,我会纠正这个问题。

  • 初始化器-对Ember内部静态实例的方法调用
  • 路由器-静态实例(虽然技术上它是创建的)
  • 适配器-@构造函数
  • 序列化程序-@构造函数
  • 转换-@constructor,假设您谈论的是DS.Transform
  • 路由-@构造函数
  • 存储区(这是余烬数据,它们初始化实例并将其连接到容器中)
  • Models-@constructor如果我们说的是DS.Model
  • 控制器-@构造函数
  • 适配器-@构造函数
  • 视图-@构造函数
  • 组件-@构造函数
  • Mixin-@constructorish,Ember.Mixin可以创建,但实例不是。您不需要使用extend来生成不同类型的mixin
路由是类定义。当您使用extend时,您并不是在创建一个单例,而是在定义一个Ember可以使用的类。如果ember需要它,它将通过命名模式知道,并将尝试使用您定义的类创建它。在余烬中使用相同的图案。Singleton是默认模式,有一些例外,例如
itemController
,或者当您在模板中使用
render
时,我确信还有很多其他模式。

  • 初始化器-对Ember内部静态实例的方法调用
  • 路由器-静态实例(虽然技术上它是创建的)
  • 适配器-@构造函数
  • 序列化程序-@构造函数
  • 转换-@constructor,假设您谈论的是DS.Transform
  • 路由-@构造函数
  • 存储区(这是余烬数据,它们初始化实例并将其连接到容器中)
  • Models-@constructor如果我们说的是DS.Model
  • 控制器-@构造函数
  • 适配器-@构造函数
  • 视图-@构造函数
  • 组件-@构造函数
  • Mixin-@constructorish,Ember.Mixin可以创建,但实例不是。您不需要使用extend来生成不同类型的mixin

路由是类定义。当您使用extend时,您并不是在创建一个单例,而是在定义一个Ember可以使用的类。如果ember需要它,它将通过命名模式知道,并将尝试使用您定义的类创建它。在余烬中使用相同的图案。Singleton是默认模式,有一些例外,例如
itemController
,或者当您在模板中使用
render
时,我相信还有很多其他模式。

请澄清,当您说路由器是静态实例时,建议您使用
@static
,请澄清,当你说路由器是一个静态实例时,你建议使用
@static