アプリケーションを多くの異なるディレクティブ/コンポーネントに分割するのと、多くの異なるコントローラーに分割するのとでは、どちらが優れていますか?
アプリケーションを多くの異なるディレクティブ/コンポーネントに分割すると、「深い」アプリケーションが作成されます。「深い」アプリケーションにはより多くのファイルがありますが、本質的によりモジュール化されています。利点: チーム環境で作業すると、2 人の作業が互いに衝突する可能性が低くなります (苦痛なマージの原因となります)。プロジェクト間でコードを共有するのは簡単です。短所: 問題を調べたい場合、必要な場所にたどり着くために一連のコードをたどる必要があります。例: 無線指令に問題があります。最初にテンプレートに移動し、ラジオ ディレクティブがおそらく含まれるコンポーネントを特定し、そこを調べてディレクティブの定義を確認し、最後にディレクティブ ファイルに移動する必要があります。
極端な例: 10 個の質問があるフォームを想像してください。各質問はディレクティブです。フォーム自体がコンポーネントです。フォームは、セクションがコンポーネントであるビジュアル セクションに読み込まれます。ページを構成するさまざまなセクションがテンプレートに読み込まれます。あなたがプロジェクトに不慣れで、フォームの質問 7 に問題があった場合は、テンプレートから「掘り下げ」てディレクティブを見つける必要があります。
アプリケーションを多数の異なるコントローラに分割すると、「広い」アプリケーションが作成されます。「ワイド」アプリケーションではファイルが少なくなりますが、各コントローラーはテンプレートの 1 つの側面を担当します。利点: テンプレートを簡単に調べて、定義されているすべてのものを見つけることができます。責任の各領域は、コントローラーによって引き継がれます。短所: チーム環境では、複数の人が同じファイルで作業します。プロジェクトとコードを共有することは、より複雑です。
極端な例: 10 個の質問があるフォームを想像してください。各質問にはコントローラーがあります (検証用)。フォームにはコントローラーがあります (すべての質問が有効であることを確認するため)。フォームは、コントローラを持つセクションに存在します。プロジェクトに不慣れで、フォームの質問 7 に問題があった場合は、制御するコントローラーを見つける必要があります。
では、どちらが優れていると思いますか。また、その理由は何ですか。「ディープ」アプリケーションか「ワイド」アプリケーションか?
語彙(私が理解しているので、お気軽に修正してください)
ディレクティブ: HTML テンプレートと JavaScript ディレクティブ ファイルで構成されます。ここに DOM 操作ロジック、またはその他の複雑なロジックを配置します。例: ドロップダウン、日付ピッカー、jQuery UI からのあらゆるもの。
コンポーネント: 共通点を抽象化するための再利用可能なコード片。これは視覚的に行うことができます。漫画のページを想像してみてください。ガターで区切られた多くのフレームがあります。各フレームはコンポーネントであり、芸術作品を保持するためのものです。
テンプレート: すべてのパーシャル、コンポーネント、およびディレクティブをまとめます。テンプレートは角度によってビューにレンダリングされます。
部分的: テンプレートに取り込まれることを意図した静的 HTML の一部。
表示: テンプレートのコンパイル済みバージョン。angularがコンパイルするまで、ビューは存在しません。