Библиотека Web Vitals в JavaScript предоставляет разработчикам стандартизированные метрики для оценки пользовательского опыта на веб-страницах. Основной единицей измерения является объект Metric, который обладает универсальной структурой, подходящей для всех ключевых показателей производительности.
Каждая метрика в Web Vitals представлена объектом с набором обязательных и опциональных свойств:
name Строковое значение,
определяющее название метрики. Например, 'CLS',
'LCP', 'FID', 'TTFB'.
Используется для идентификации метрики в логах и аналитических
системах.
value Числовое значение метрики,
отражающее измеренный показатель. Единицы измерения зависят от типа
метрики:
delta Число, показывающее изменение
значения метрики по сравнению с предыдущим измерением. Позволяет
отслеживать динамику и выявлять ухудшения производительности при
интерактивном мониторинге.
entries Массив объектов
PerformanceEntry или их производных, которые привели к
формированию значения метрики. Для LCP это могут быть
записи largest-contentful-paint, для CLS —
записи layout-shift. Это свойство обеспечивает глубокий
доступ к деталям метрики и позволяет анализировать конкретные элементы
страницы, которые влияют на пользовательский опыт.
id Уникальный идентификатор
метрики. Генерируется автоматически и используется для связывания
нескольких замеров одной метрики в динамических сценариях, например при
SPA-приложениях, где одна и та же метрика может меняться
многократно.
entries даёт возможность детализированного
анализа без необходимости прямого обращения к API Performance.delta позволяет строить графики изменений и реагировать
на ухудшение показателей в реальном времени.В TypeScript объект Metric описывается следующим образом:
interface Metric {
name: 'CLS' | 'FID' | 'LCP' | 'TTFB' | string;
value: number;
delta: number;
entries: PerformanceEntry[];
id: string;
}
Такое строгое определение обеспечивает корректную типизацию при сборе метрик и передаче их в аналитику.
id, что гарантирует точность данных.import { getLCP, getCLS } from 'web-vitals';
getLCP((metric) => {
console.log(metric.name); // LCP
console.log(metric.value); // миллисекунды
console.log(metric.entries); // массив PerformanceEntry
});
getCLS((metric) => {
console.log(metric.delta); // изменение метрики с момента последнего измерения
});
Благодаря единой структуре Metric, одна и та же функция для логирования или отправки данных может работать с любыми метриками Web Vitals. Это упрощает интеграцию с аналитическими платформами и системами мониторинга производительности.
Универсальный объект Metric является ключевым элементом библиотеки Web Vitals, объединяя все показатели производительности в единый интерфейс с понятной и предсказуемой структурой.