Angular-cliを使用して、アプリコードをバンドルするが、Angular2フレームワークやその他の大きな外部JavaScriptライブラリをバンドルされたコードに含めないアプリを構築したいと思います。ページがロードされるときに、CDNからこれらのライブラリをロードしたいと思います。これを行う方法はありますか?
また、使用しているAngular2フレームワークの一部のみがロードされるローカルビルドの利点を維持しながらこれを行う方法はありますか?
私はこの質問を見ましたが、それはSystemJS用であり、Angular-cliには適用されないと思います: CDNとSystemJSを使用してangular2をロードする方法
CDNを指す適切な<script src="">
タグをindex.html
ファイルに追加するだけです。 .jsファイルをangular-cli.json
から削除して、アプリにバンドルされないようにしてください。
現在、Angular 2 jsファイル自体に対してはできません。これらは自動的にアプリにバンドルされます。最新の更新により、Webサーバーとブラウザはベンダーファイルをキャッシュできるようになります。アプリのすべての訪問者に再ダウンロードされるのではなく、ハッシュが変更されたときにのみ再ダウンロードされます。
Angularバージョン2以降でアプリケーションを作成するときは、使用するAngularプラットフォームの部分のみを含むビルドシステムを使用します。テンプレートはビルド時にコンパイルでき、ビルドプロセスを実行できますバンドルされたペイロードからテンプレートコンパイラを削除します最後に、ビルドプロセスはコードの静的分析を使用してツリーシェーキングを行い、プラットフォームの未使用部分をペイロードバンドルからさらに削除します。
CDNからAngularを提供する場合、キッチンシンク、プラットフォーム全体である必要があります。これは非常に大きく、アプリケーションに悪影響を及ぼします。
必要なプラットフォームの部分をangle-cliバンドルできるようにした方がはるかに良いでしょう。 WebPack treeshakingプラグインが改善されると、バンドルサイズが小さくなります。
Akamai などのアプリ全体をCDNに追加します。たとえば、(アプリの構造に応じて)以下のリストにあるようなファイルをキャッシュできます...
これにより、AngularフレームワークファイルをCDNにキャッシュするだけでなく、パフォーマンスがさらに向上します。