質問のパフォーマンスの側面はちょっと議論の余地があると思います。テーブルとテーブル行の数のアイデアを使用してみましょう。カスタム ディレクティブを使用したり、テンプレートを読み込んだりして数百行のデータを生成する場合を除き、パフォーマンスが大幅に低下することはおそらくないでしょう。Angular はテンプレートをキャッシュするので、行ごとに同じテンプレートを何度もロードすることはありません。多数の行を生成している場合は、パフォーマンスの調整と、それらの問題に対処するために利用できるさまざまな UX アプローチがあります (例: track by
、ng-repeat
エンドレス スクロール、ページネーションなど)。
カスタム ディレクティブの大きさはどのくらいですか?
あなたが述べたように、ディレクティブを使用してビュー全体を作成できます。Angular 1.* では、それは意図した機能ではなかったと思います。ディレクティブは、ウィジェットまたは UI コンポーネントに似ていました (特定の UX を念頭に置いた大部分が UI コンテナーであるディレクティブについては、この議論では明らかに非 UI タイプのディレクティブを考慮していません)。
私の経験則は次のとおりです。
- 問題の UI に URL (別名ルート) の所有権がある場合は、それをビューとして扱います。通常、URL は視覚的に一意であるため、ディレクティブを使用しても作業が増えるだけで成果はほとんどありません。
- 問題の UI がウィジェット/UI コンポーネントのように機能する場合は、ディレクティブを使用します。
- 問題の UI が何度も再利用される場合 (例: の内部)、消費するデータに対する 特定の作業
ng-repeat
を分離する場合は、ディレクティブを検討する必要があります。
これらの点はすべて、意図した UX によって複雑になります。しかし、経験則は良い出発点となります。
Angular 2 では、スコープを廃止し、ディレクティブをビューのように扱うことで、これらすべてを変更する予定です。