В вебе есть множество API для информирования о том, что происходит в вашем приложении. Вы можете мониторить множество вещей и наблюдать практически любые типы изменений.
Эти изменения варьируются от простых вещей типа мутаций DOM и отлова ошибок на клиентской части до более сложных уведомлений типа разрядки батареи устройства пользователя. При этом остается постоянным набор способов взаимодействия с ними: функции обратного вызова, промисы, события.
Ниже показаны отдельные примеры их использования, которые я придумал. Этот список совсем не исчерпывающий. В основном это примеры мониторинга структуры приложения, его состояния и свойств устройства, на котором оно выполняется.
Прослушиваем события DOM (как нативные, так и кастомные)
Прослушиваем модификацию DOM
Узнаем об изменении URL
Узнаем о работе приложения в полноэкранном режиме (подробнее)
Узнаем о поступлении сообщений по WebRTC
Узнаем об ошибках на клиентской стороне (подробнее)
Отслеживаем изменение ориентации экрана устройства (подробнее)
Отслеживаем изменения в сетевом соединении (подробнее)
Отслеживаем состояние заряда батареи устройства (подробнее)
Узнаем о видимости/нахождении в фокусе вкладки или страницы (подробнее)
Узнаем о смене пользователем расположения
Узнаем о изменении разрешений на использование нужного API (подробнее)
Узнаем об обновлении другой вкладкой локального хранилища или хранилища сессии
Узнаем о появлении или покидании элементом области видимости (то есть о видимости элемента, подробнее)
Узнаем, когда браузер находится в “ленивом” режиме (и готов выполнить какую-нибудь дополнительную работу, подробнее)
Узнаем о загрузке браузером ресурса или о записи метрики User Timing (подробнее)
Узнаем об изменении свойств объекта (включая свойства DOM, подробнее)
Я предполагаю, что вы могли бы классифицировать некоторые из этих примеров как техники и паттерны (например, реагирование на события DOM). Однако многие совершенно новые API создавались с определенной целью: измерение производительности, информирование о заряде батареи, состояния онлайн или офлайн.
Это действительно впечатляет, к каким вещам у веб-разработчиков есть доступ в наши дни. API есть практически для всего.