
Angularを実際にZonelessにしたプロセスとその効果
DRANK
Zonelessにした場合のBundleサイズの削除効果は限定的本当のメリットは以下の通り必要最低限の変更検知にすることでのパフォーマンスの向上起動時のオーバーヘッド(Monkey Patchingによるコスト)の削減デバッグ体験の向上 / より良いエコシステム互換性Zonelessを目指そう規模の小さいWebサイト(Angular Prerenderサイト)をZonelessにしたので、軽くまとめておきます。ZonelessとはAngularでは、デフォルトで zone.js を利用して「変更検知(Change Detection)」をトリガーしています。Zone.jsは、JavaScriptの非同期処理(setTimeout、Promise、XHRなど)をフックして、何かしらのイベントが終わった後にAngularに「変更があったかもよ!」と通知して、UIの再描画を促します。けれど、Zone.jsでの変更検知は、不要な変更検知が走ってしまうことでのパフォーマンスの悪影響であったり、またZone.jsがペイロードサイズと起動時間の両方で、かなりのオーバーヘッドをもたらします。そこで、AngularチームはZone.jsを使わないAngular = Zonelessを目指して、実装を進めていました。ZonelessにしたプロセスChangeDetectorRef.markForCheck APIに差し替えるのはとてつもなく…
1 comments