2014-01-08 4 views
8

誰もがこれについていくつかのポインタを提供できますか?多くのモジュールがAngularJSの性能を打ちましたか?

私はサービスモジュール、工場モジュールなどを数多く持っていますが、さまざまなコントローラの下に配置された多数のhtml要素を持つ大規模なアプリケーションを作成しようとしています。

これらのサービス/工場モジュールを依存関係として私のコントローラに入れておくと(にいつでも必要な場合があるので、それらを依存関係として追加します)。それは私のアプリのパフォーマンスを打つことができますか?何らかのオーバーヘッドを避けるために、使用されているモジュールのみを含めるべきですか?

サーフィンをしても明確な洞察を得ることはできませんでした。

+0

jsperf.comで実行して結果を共有します。 – Stewie

答えて

10

私は角のドキュメントで次の文が見つかりました: モジュールは、それらの依存関係など、他のモジュールを一覧表示することができます

http://docs.angularjs.org/guide/module

依存関係を。モジュールによっては、必要なモジュールがロードされる前に、必要なモジュールをロードする必要があることを意味します。換言すれば、要求されるモジュールの構成ブロックは、要求モジュールの構成ブロックの前に実行される。ランブロックについても同様です。他のモジュールが複数必要な場合でも、各モジュールは一度しかロードできません。

非同期ロード モジュールは$インジェクタの構成を管理する方法であり、VMへのスクリプトのロードとは何の関係もありません。スクリプトの読み込みを扱う既存のプロジェクトがあり、これはAngularで使用できます。モジュールはロード時に何も行わないため、VMに任意の順序でロードできます。したがって、スクリプトローダーはこのプロパティを利用してロードプロセスを並列化できます。

私はあなたが何千ものモジュールを含んでいれば、唯一の制限はスクリプト環境にそれらを読み込むために予約されているブラウザのメモリだと思います。私はこれが唯一の制限であることを願っています。なぜなら、実際にこのスクリプトのロードをどのように行うかについてjsエンジンを調べるのに少しでも時間を費やさなかったからです。

パフォーマンス比較の最初の草案を作成しました。これらのテストケースには、none、100、1000、2000のモジュールがappモジュールに含まれています。今のところ、私は大きなパフォーマンスの違いは見られません! jsperf

+1

jsperfにさらに2つのリビジョンを追加しました。 1:http://jsperf.com/angular-many-modules-performance-comparison/2では、サービスの取得に関するオーバーヘッドはほとんどありません。 2:http://jsperf.com/angular-many-modules-performance-comparison/3 インジェクタを作成するときにオーバーヘッドがあり、起動時に悪影響を与える可能性があることがわかります。 – cemonds

関連する問題