2016-07-13 12 views
19

コンポーネントとディレクティブの実際の違いを理解することが難しいと感じています。私は今、コンポーネントがはるかに簡単な概念であることを理解しています。角度1.5:ディレクティブ対コンポーネント?

これを念頭に置いて、角度1.5を使用する際に指令を引き続き使用する理由はありますか?

ここでは本当の意味が分からないことがありますが、コンポーネントがより簡単なAPIを提供するようです。

私は指示を続ける必要がありますか?

角2はすべてがコンポーネントなので、1.5から2への簡単な移行に向けては、今後のコンポーネントのみを使用するのは理にかなっていませんか?

これまでは、たとえば自動検索のテキストボックスを作成するためにディレクティブを使用していましたが、コンポーネントの内部でこれを行うべきではない理由はありません。そして、私は作成した他のコンポーネントの中でこのコンポーネントを再利用できますか?

誰かが私がやっているべきことと今後の推薦される方法を確認できたら本当にありがたいです。彼らは私が

の理解コンポーネントの角に

を考えることができる最善の方法でそれを置くので

答えて

24

ちょうど角度のドキュメントをコピー

おかげで、コンポーネントは、特別な種類のですディレクティブは、コンポーネントベースのアプリケーション構造に適したよりシンプルな構成を使用します。

これにより、Webコンポーネントを使用するか、またはAngular 2のアプリケーションアーキテクチャのスタイルを使用するのと同様の方法でアプリケーションを書きやすくなります。コンポーネントの

利点:

  • まともなデフォルト値とベストプラクティスを促進し、プレーンディレクティブより

    • 簡易な構成
    • にアップグレードすることが容易になりますコンポーネントベースのアーキテクチャ
    • 書き込みコンポーネントディレクティブ用に最適化 角度2

    nあなたが優先順位のような高度なディレクティブの定義のオプション、 ターミナル、マルチを必要とするとき、コンパイルとリンクの機能が

  • 使用できないので、イベントリスナーに などを追加し、DOM操作に依存しているディレクティブの

    • :コンポーネントを使用するOT
    • -elementあなたは属性やCSS クラスによってトリガーされるディレクティブではなく、要素

    もっと読みたいとき:を

  • +0

    あなたが痛いの違いを言いましたか? –

    0

    コンポーネントは基本的に、コンポーネントベースのアーキテクチャ向けに設計された新しいタイプのディレクティブです。多くの点で、コンポーネントの機能は制限されており、より優れた規約と設計が推奨され、実際には保守性と再利用性の高いコードにつながります。

    たとえば、コンポーネントは分離スコープを強制し、一方向バインディングを強く推奨します。何でこれが大切ですか?これによりコンポーネントがカプセル化され、親要素またはスコープと緊密に結合されたコンポーネントの作成が妨げられるためです。これは、コンポーネントを変更せずに将来再利用できるように書くことを意味します(コピーアンドペーストの再利用ではなく、やり直す傾向があります)。これにより、データのやりとりや変更の追跡と制御が容易になります。

    コンポーネントは親スコープと引き続き対話できますが、これはコンポーネントイベントにバインドされたコールバックによって実行されます。ここでも、この制限により、コンポーネントを再利用しやすくし、コンポーネントが親スコープおよび外部要素とどのようにやり取りしているかを把握するソフトウェア設計が強制されるか、少なくとも強く推奨されます。

    コンポーネントはAngularJSモジュールの.component()メソッドを使用して登録できます(angular.module()によって返されます)。このメソッドは2つの引数を取ります。

    1)コンポーネントの名前(文字列として)。

    2)コンポーネントの設定オブジェクト。 (.directive()メソッドとは異なり、このメソッドは、ファクトリ関数を取らない、ということに注意してください。)ディレクティブの

    //

    module.directive(名前、FN)を、コンポーネント

    モジュール用

    //。コンポーネント(名前、オプション)。

    関連する問題