28

というわけで、私は Angular を使った最初の主要なプロジェクトの真っ最中です。大量の処理を行っているコントローラーが 1 つありますが、数千行の JavaScript になるところまで来ています

どうにかしてこれを分割したいのですが、どこにもしっかりした例が見つからないようです。コードの大部分はオブジェクトの計算に使用される関数で構成されているため、ディレクティブとモジュールは正しい答えのようには見えませんが、間違っている可能性があります。

大規模な Angular プロジェクトでコードをどのように整理していますか? 私はそれを吸うべきですか、それともこれをスキャンしやすいファイルに分割する適切な方法はありますか?

4

3 に答える 3

26

これらのオブジェクトとそれに関連する計算の少なくとも一部をサービスに入れてから、サービスをコントローラーに挿入することをお勧めします。一部のデータをカプセル化し、そのデータにアクセス/操作するためのメソッドを提供するサービスの例については、付箋紙パート1のブログエントリを参照してください。

コントローラをビューごとに1つずつ、複数のコントローラに分割できるかどうかを確認します。ビューは、ページと同じ大きさでも、ページ上のチャンク/ブロックでもかまいません。

私が最近見たグーグルグループの投稿から引用すると、「私は角度コントローラーを私のビューのダムapis / configsと考え、すべての面倒な作業をサービスに任せることを好みます。」-参照

于 2012-08-30T15:28:27.777 に答える
23

コントローラーを使用しているときに、自問する必要があることがいくつかあります。

  1. コントローラーで DOM 操作を行っていますか? これは明確なNOです。そんなことは絶対にしないでください。常にディレクティブ部門に所属しています。

  2. コントローラーにビジネス ロジックを記述していますか? それもNOです。ほとんどの場合、ビジネス ロジックはサービス内に存在する必要があります。それはそれにふさわしい場所です。

次に、コントローラーを見てください。これらの 2 つが欠けていて、それでも 1000 行を超えていますか? 可能性は非常に低いですが、何らかの形で発生している場合でも、コントローラーをより小さなコントローラーに分割することを検討してください。このコントローラーの分割は、ビューに基づいて行う必要があります。

要約すると、コントローラーは、ビジネス ロジックとビューを HTML で結合する場所にすぎません。技術的には、これらの接着剤以外のものを含めるべきではありません。

于 2012-08-30T15:32:43.197 に答える