PassFront
  1. PassFront
  2. База знаний
  3. Change Detection

Что такое Zone.js и что означает zoneless-режим в Angular?

Change Detection

Zone.js — библиотека, которая перехватывает асинхронные операции браузера (события, таймеры, промисы) и сообщает Angular, что данные могли измениться и нужно запустить проверку изменений.

Как это работает

Zone.js подменяет setTimeout, addEventListener, Promise и другие API. После каждого завершённого асинхронного колбэка зона уведомляет Angular, и тот проходит по дереву компонентов и обновляет шаблоны.

Минусы

  • Лишние проверки: срабатывает на любое событие, даже если данные не менялись.
  • Размер библиотеки и нюансы с нативными async/await и сторонним кодом.
  • Сложнее отладка стека вызовов.

Zoneless

В современных версиях Angular можно работать без Zone.js. Проверку запускают явные сигналы об изменениях: изменение signal, markForCheck, события шаблона, async pipe.

bootstrapApplication(AppComponent, {
  providers: [provideZonelessChangeDetection()],
});

Для этого код должен опираться на сигналы и OnPush, а не на изменение обычных полей.

Коротко для собеседования

Zone.js сообщает Angular о любой асинхронности и запускает проверку. Zoneless заменяет это явными сигналами и ускоряет приложение.

Другие вопросы раздела