Библиотека Web Vitals предоставляет возможность
измерять ключевые метрики производительности веб-страниц, такие как
LCP, FID, CLS и
другие. Для передачи данных о метриках в сторонние системы используется
объект конфигурации ReportOpts, который задаёт
параметры поведения функции onReport. Понимание структуры
ReportOpts критично для точного и корректного сбора
аналитики.
Объект ReportOpts представляет собой JavaScript-объект с рядом полей, каждый из которых отвечает за определённый аспект работы мониторинга:
{
onReport: function(metric) { ... },
reportAllChanges: boolean,
attribution: boolean,
analyticsId: string,
// дополнительные поля в зависимости от версии библиотеки
}
onReportТип: function(metric: Metric) => void
Обязательное поле для большинства сценариев использования.
Определяет callback, который вызывается при каждом изменении метрики.
Параметр metric содержит объект метрики с
полями:
name — название метрики (LCP,
FID, CLS и т.д.)value — числовое значение метрикиdelta — изменение значения с предыдущего измеренияid — уникальный идентификатор конкретного
измеренияentries — массив PerformanceEntry
объектов, связанных с метрикойПример использования:
import { getLCP } from 'web-vitals';
getLCP(metric => {
console.log(metric.name, metric.value);
});
Использование ReportOpts позволяет передавать этот callback централизованно для нескольких метрик.
reportAllChangesbooleanfalse.true, callback onReport будет
вызываться при каждом изменении значения метрики, а не только при первом
измерении.Пример:
getCLS(metric => {
console.log(metric);
}, { reportAllChanges: true });
attributionbooleantrue в объект метрики добавляются данные для
точного анализа источников задержек.Пример:
import { getFID } from 'web-vitals';
getFID(metric => {
console.log(metric.entries); // массив EventEntry с подробной информацией
}, { attribution: true });
analyticsIdstringПример:
getLCP(metric => sendToAnalytics(metric), { analyticsId: 'UA-XXXXX-Y' });
reportAllChanges +
attribution: комбинация этих двух полей позволяет
получать детализированные метрики при каждом изменении DOM, что важно
для сложных SPA.onReport + analyticsId:
обеспечивает централизованную отправку данных в сторонние сервисы,
упрощая интеграцию аналитики.onReport библиотека не имеет способа
сообщить о результатах измерений, даже если заданы остальные поля.Механизм ReportOpts делает библиотеку Web Vitals не только инструментом измерения, но и платформой для построения сложной аналитики, позволяя учитывать уникальные особенности веб-приложений и их взаимодействие с пользователем.