私はember.jsを学んでおり、ビューとコンポーネントの違いを理解しようとしています。私は両方を再利用可能なコンポーネントを作成する方法と考えています。
ビューに関するEmberのWebサイトから:
Ember.jsのビューは通常、次の理由でのみ作成されます。
-ユーザーイベントの高度な処理が必要な場合
-再利用可能なコンポーネントを作成する場合
Emberのコンポーネントに関するWebサイトから:
コンポーネントは、JavaScriptを使用して実装する動作と、Handlebarsテンプレートを使用して記述する外観を持つカスタムHTMLタグです。これらを使用すると、アプリケーションのテンプレートを簡素化できる再利用可能なコントロールを作成できます。
それでは、ビューとコンポーネントの主な違いは何ですか?そして、コンポーネントよりもビューを使用したい場合、またはその逆の場合の一般的な例は何でしょうか?
Ember.View は、現在W3Cによって作成されたタグに制限されています。しかし、独自のアプリケーション固有のHTMLタグを定義し、JavaScriptを使用してその動作を実装する場合はどうでしょうか。 Ember.View で実際にこれを行うことはできません。
それがまさにコンポーネントでできることです。実際、W3Cが現在 Custom Elements 仕様に取り組んでいることは非常に良い考えです。
Emberのコンポーネントの実装は、可能な限りWebコンポーネント仕様に近づけるようにしています。 カスタム要素 がブラウザで広く利用可能になったら、EmberコンポーネントをW3C標準に簡単に移行し、それらを使用できるようになります。新しい標準を採用した他のフレームワークでも使用できます。
これは私たちにとって非常に重要であるため、コンポーネントの実装がWebプラットフォームのロードマップと一致するように、標準化団体と密接に協力しています。
また、 Ember.Component は実際には Ember.View (サブクラス)ですが、完全にisolatedであることに注意することも重要です。テンプレート内のプロパティアクセスはviewオブジェクトに移動し、アクションはviewオブジェクトも対象とします。周囲のcontext
または外側のcontroller
へのアクセスはありません。すべてのコンテキスト情報はで渡されますが、 Ember.Viewの場合はそうではありません 周囲のコントローラーに実際にアクセスできます。たとえば、ビュー内でthis.get('controller')
のような操作を行うと、現在ビューに関連付けられているコントローラーを取得できます。
それでは、ビューとコンポーネントの主な違いは何ですか?
そのため、コンポーネント以外の主な違いは、独自のタグを作成できることと、将来的に Custom Elements が利用可能な場合に、これらのコンポーネントを移行/使用することです。カスタム要素をサポートする他のフレームワークは、特定の実装ケースに応じて、ある時点でemberコンポーネントがビューをやや時代遅れにすることです。
そして、コンポーネントよりもビューを使用したい場合、またはその逆の場合の一般的な例は何でしょうか?
上記に従って、これは明らかにユースケースに依存します。しかし、経験則として、ビューで周囲のコントローラーなどにアクセスする必要がある場合は Ember.View を使用しますが、ビューを分離して必要な情報のみを渡す場合はコンテキストに依存せず、はるかに再利用できるようにするには、 Ember.Component を使用します。
それが役に立てば幸い。
Road to Ember 2. の発行により、ほとんどの場合、ビューの代わりにコンポーネントを使用することが推奨されます。
答えは単純です:use components
2013年8月に記録されたトレーニングビデオによると、Yehuda KatsとTom Dale(Emberコアチームメンバー)は、フレームワーク開発者でない限り視聴者にビューを使用しないように言った。ハンドルバーの多くの機能強化とコンポーネントの導入により、ビューは不要になりました。ビューは、{{#if}}や{{outlet}}などを強化するために内部的に使用されます。
また、コンポーネントは、ブラウザに組み込まれるWebコンポーネント標準によく似ているため、快適にビルドすることには多くの副次的な利点がありますEmberコンポーネント。
2014-11-27を更新
Ember 2.0はコントローラー/ビューの代わりにルートが入力されるとRoutable Componentsを使用するため、ビューの代わりにコンポーネントを使用することがさらに重要になります。アプリを将来的に証明するには、ビューから離れることをお勧めします。
ソース:
現状では-v2.x
は現在の安定リリースです-ビューは完全に廃止されています。 ビューはEmber 2.0 APIから削除されていると言われています 。
したがって、Ember 2.0で{{view}}
キーワードを使用すると、アサーションがトリガーされます。
アサーションに失敗しました:Ember 2.0で
{{view}}
またはそれに基づくパスが削除されました
Ember 2.0でビューを使用する必要がある場合は、 ember-legacy-views addonを使用できます。これはバージョンまでEmberと互換性があります2.4。
まとめると、コンポーネントは現在(ビューは削除されています)であり、将来は-コンポーネントもコントローラーに置き換わります。 Routable Components RFC を参照してください。