Пропустить до содержимого
angular challenges logo Angular Challenges

🟠 Оптимизация обнаружения изменений

Испытание #12

Создано Thomas Laforge

Информация

В Angular есть библиотека под названием Zone.js, которая выполняет множество магии, чтобы упростить жизнь разработчика. Zone.js монкипатчит все события DOM, чтобы перепроверить и перерисовать представление, когда что-то изменилось внутри приложения. Разработчику не нужно вручную запускать обнаружение изменений.

Однако иногда Zone.js вызывает гораздо больше обнаружения изменений, чем это необходимо. Например, когда вы прослушиваете событие прокрутки, каждое событие прокрутки вызывает новый цикл обнаружения изменений.

В этом испытании нам нужно обновлять представление только в определенной позиции прокрутки, чтобы показать или скрыть кнопку. Все остальные циклы избыточны.

Чтобы лучше понять проблему, выполните профилирование вашего приложения с помощью Angular Dev Tools.

Вы можете узнать больше деталей о загрязнении зон и способах его решения здесь.

В следующем видео более подробно объясняется проблема этого приложения.

Утверждение

Ваша цель в этом испытании - избежать всех избыточных циклов обнаружения изменений и запускать обнаружение изменений только при необходимости.

Ограничение:

Вы не можете глобально отключить Zone.js. Если этот код является частью большого проекта и вы отключите Zone.js, вы без сомнения сломаете ваше приложение.

Контрибьюторы

Спасибо всем контрибьюторам которые помогли сделать эту документацию лучше!

  • Dinozavvvr