Angular8アップデート内容ざっくりまとめ
はじめに
今日、Angular8がリリースされたらしい。 Mediumも更新されていたので、さっくりまとめる。
原文
アップデート方法
直近のアップデートを入れている人は、ng update @angular/cli @angular/core
でOK。
(多分Angular6くらい?)
それ以外の人はupdate.angular.ioでアップデート方法を確認できる。
Differential Loading By Default
Differential Loadingというブラウザが自身の性能に合わせて、モダンかレガシーなJavaScriptを選ぶプロセスがある。
Angularのビルドはデフォルトでモダン向けのビルド(es2015)とレガシー向けのビルド(es5)を行ってくれるようになった。
ユーザがAngular8のアプリケーションを読み込んだ時、自動で必要なファイルを取得してくれる。
ng update
でAngular8にバージョンアップするとtsconfig.json
をDifferential Loadingに対応するよう勝手にアップデートしてくれる。
CLIはtsconfig.json
のtarget
を見てDifferential Loadingが必要か判断してくれる。
target
にes2015
を設定するとモダンとレガシー、2つのバンドルを生成してくれる。
実行時にScriptタグを見て、正しい方を読み込んでくれる。
<script type="module" src="…"> // Modern JS <script nomodule src="…"> // Legacy JS
angular.ioではこれでモダンブラザ向けに40KBほど初期バンドルサイズを削減できたらしい。7〜20%くらいの割合に当たるとのこと。
Differential Loadingについて詳しくしりたい場合はこちらから。
Route Configurations use Dynamic Imports
モジュールの遅延ロードをするとき、今まではAngular独自の書き方であったが、一般的なDynamic Importの形に変わった。
ちなみにこれでVSCodeとかのサポートを受けられるらしい。
これもng update
すると勝手にアップデートしてくれる。
// 今まで {path: '/admin', loadChildren: './admin/admin.module#AdminModule'} // これから {path: `/admin`, loadChildren: () => import(`./admin/admin.module`).then(m => m.AdminModule)}
Builder APIs in the CLI
ng new
, ng generate
, ng add
, ng update
のようなBuilderAPIが増えた。
こことかここを確認すると良さそう。
最新版のAngular Fireを使えばngコマンドでFirebaseにデプロイできる。
$ ng add @angular/fire $ ng run my-app:deploy
Workspace APIs in the CLI
今まではworkspace configurationを変更するために、直接angular.json
を変更する必要があった。
8からはAPIが用意されたらしい。詳しくはこちらから。
リンクも読んだんだけど、そもそもWorkspaceが何のことかわからなかったので、なんの恩恵があるかわからなかった。
悲しいから今度調べてみる。
Web Worker Support
WebWorkerをCLIから作れるようになった。
プロジェクトに追加するには、ng generate webWorker my-worker
でOK。
一度追加してしまえば、CLIがよしなにバンドルしてくれるし分割してくれる。
詳しくからこちらから。
const worker = new Worker(`./my-worker.worker`, { type: `module` });
AngularJS Migration Improvements
AngularJSの$location service
を使う場合、LocationUpgradeModule
を提供するようになったらしい。
これにより、AngularのLocation
にシフトしてくれるらしい。
AngularJSを知らないのでなんとも言えないけど、AngularからAngularJSのアプリケーションをロードできるっぽい。
詳しくはこことかここを参照すると良い。
New Deprecation Guide
廃止予定の機能も廃止予定バージョンから2バージョン後までサポートしてくれるらしい。
Angular8でplatform-webworker
が非推奨になり8.1で廃止されるが、Angular9,10でも機能してくれるとのこと。
非推奨機能の一覧と削除予定はこちらから。
Ivy & Bazel
今回入るって言われてた気がするけど、入らなかったらしい。
続報についてはブログ(原文のMedium)で出されるとのこと。
入らなかったのはとても残念。
勘違いで一応入っているっぽい?
オプトインとのこと。
続報がブログであることは変わらなそう。
まとめ
ざっくりアップデート内容を和訳してまとめてみた。
5,6,7では正直クリティカルなアップデートはなかった気もしてる。
ただ、今回はDifferential LoadingとかWebWokerとかBuilder APIとか入れといた方が良さそうなものが多い印象。
今後もアップデートは続くだろうし積極的に追ってきたいところ。
とりあえず手元のアプリをアップデートするところから始めます。
それでは今回はこの辺で。