1

@classYUIDocs のようなドキュメンテーション ツールを使用すると、コメント ブロックでタグを使用して、クラス (オブジェクト クラス) を識別および説明できます。識別された各クラスには、次のように定義された@staticorタグが必要です。@constructor

  • @constructor- クラスがインスタンス化可能 (new キーワードで作成) であることを示します。
  • @static- クラスを new でインスタンス化してはならないことを示します。クラスのすべてのメソッドを静的に呼び出すことができます。

Ember では、 を使用してサブクラスを作成することがよくありますextend()。私の知る限り、これはクラスの新しいインスタンスを作成しません。ただし、これらの定義の多く (ルートのコントローラーなど) は、定義に使用してもシングルトンですextend()

したがって、私の質問は次のとおりです。ember アプリでクラスを文書化する一般的な状況では、@constructorvsを使用し@staticますか? そのような例は次のとおりです。

  • 初期化子
  • ルーター
  • アダプター
  • シリアライザー
  • 変換
  • ルート
  • 店舗
  • モデル
  • コントローラー
  • ビュー
  • コンポーネント
  • ミックスイン

Handlebars ヘルパーは実際にはクラスではなくメソッドであると信じているため、ここには含めませんが、間違っている場合はこの質問を修正します。

4

1 に答える 1

4
  • 初期化子 - Ember 内の静的インスタンスのメソッド呼び出し。
  • ルーター - 静的インスタンス (ただし、技術的には作成されます)
  • アダプター - @constructor
  • シリアライザー - @constructor
  • 変換 - @constructor、DS.Transform について話していると仮定して
  • ルート - @constructor
  • ストア (これは Ember Data です。インスタンスを初期化し、コンテナー内に接続します)
  • モデル - DS.Model について話している場合は @constructor
  • コントローラー - @constructor
  • アダプター - @constructor
  • ビュー - @constructor
  • コンポーネント - @constructor
  • Mixins - @constructorish、Ember.Mixin は作成できますが、インスタンスは作成できません。そして、生成されたさまざまなタイプのミックスインに拡張を使用しません。

ルートはクラス定義です。拡張を使用するときにシングルトンを作成するのではなく、Ember が使用できるクラスを定義しているだけです。ember がそれを必要とする場合、名前付けスキーマによって認識され、定義したクラスを使用して作成を試みます。同じパターンが Ember 全体で使用されます。シングルトンは、テンプレートでitemController使用する場合など、いくつかの例外を除いてデフォルトのパターンです。他にもたくさんあると思います。render

于 2014-07-24T01:42:39.960 に答える