web-dev-qa-db-ja.com

Angularjs:ocLazyLoadとRequirejs

私は大規模なangluarプロジェクトに取り組んでおり、スクリプトを遅延ロードする方法が明らかに必要です。

以前にrequire.jsを使用したことがあり、それは非常に優れていますが、問題は、ファイルを連結して縮小した後、150万のjsファイルを取得したことです。

だから私はちょうど遭遇しました OcLazyload そしてそれは有望に見えますが、requireとocLazyLoadの両方を使用する多くの例をウェブ上で見ました、なぜあなたが両方を使用したいかについて少し混乱しています。彼らは両方とも同じことをしていませんか?

22
Tomer

OcLazyLoadとRequireJSの両方が必要です。これは、javascriptモジュールとangular内部モジュール)という2つの別個のモジュール概念を扱うためです。

最初のブートストラップの後、angularjsはディレクティブやコントローラーなどの新しいモジュールやコンポーネントを登録することを許可しなくなりました(少なくとも標準的な方法を使用していません)。

RequireJSはjavascriptファイルのみをロードしますが、この新しいコードに新しいangularモジュールとコンポーネントを登録しません

OcLazyLoadが行うことは、RequireJSなどのサードパーティのモジュールローダーを使用して追加のファイルをロードできるようにすることです。これは、遅延ロードされたコードの新しいモジュールとコンポーネントをangularに登録します。

要約すると、RequireJSのみを使用してコードを遅延ロードできますが、RequireJSのみを使用してangularモジュールおよびコンポーネントをロードすることはできません。ocLazyLoadによって実行されるこのような追加の作業が必要です。

18
Adrian Mitev

OcLazyLoadでRequireJSを使用できますが、お勧めしません。人々が私にそれをするように頼み、統合が簡単だったので、それは可能です。 ocLazyLoadにはjs/css/templatesファイル用の独自のローダーが含まれており、angularモジュールだけでなく、あらゆる種類のファイルをロードできるため、RequireJSは必要ありません。

Angularモジュールを遅延ロードする場合は、それらをAngular(またはwait Angular 1.5それはあなたがそれをすることを可能にするでしょう)。

つまり、RequireJSをocLazyLoadと一緒に使用することも、ocLazyLoad(推奨)だけを使用することもできますが、RequireJSだけを使用することはできません。

31
Olivier