В библиотеке Web Vitals основным элементом для работы с метриками является объект Metric. Он представляет собой структуру данных, которая описывает конкретный показатель производительности веб-страницы и его текущие значения. Metric позволяет централизованно хранить и обрабатывать информацию о метриках, обеспечивая удобный интерфейс для интеграции с аналитическими инструментами и пользовательскими скриптами.
Объект Metric имеет следующие ключевые поля:
CLS, LCP, FID
или TTFB.PerformanceEntry, которые обеспечивают детальный доступ к
исходным данным браузера. В Web Vitals эти записи позволяют выполнять
глубокий анализ причин отклонений и оптимизировать отдельные участки
страницы.good, needs-improvement или
poor. Оно классифицирует текущее состояние метрики в
соответствии с рекомендуемыми пороговыми значениями.Тип Metric является дженериком и принимает один параметр, который определяет тип значения метрики:
interface Metric<T = number> {
name: string;
value: T;
delta: T;
entries: PerformanceEntry[];
id: string;
rating?: 'good' | 'needs-improvement' | 'poor';
}
T по умолчанию установлен как number,
что подходит для большинства стандартных Web Vitals метрик, таких как
CLS, LCP, FID,
TTFB. Однако возможность передачи собственного типа
позволяет расширять функциональность:
boolean, чтобы отмечать успешное
или неуспешное выполнение определенной проверки.{duration: number, count: number}."fast" | "medium" | "slow"), можно использовать дженерик с
типом string.const lcpMetric: Metric<number> = {
name: 'LCP',
value: 2450,
delta: 200,
entries: [],
id: 'metric-1',
rating: 'needs-improvement'
};
interface CustomMetricValue {
duration: number;
interactions: number;
}
const customMetric: Metric<CustomMetricValue> = {
name: 'CustomInteractionMetric',
value: { duration: 1200, interactions: 3 },
delta: { duration: 50, interactions: 1 },
entries: [],
id: 'metric-2'
};
const loadCheck: Metric<boolean> = {
name: 'CriticalAssetsLoaded',
value: true,
delta: false,
entries: [],
id: 'metric-3'
};
Использование дженериков позволяет:
Библиотека Web Vitals предоставляет функции для сбора метрик, например:
getCLS(callback: (metric: Metric) => void)getLCP(callback: (metric: Metric) => void)getFID(callback: (metric: Metric) => void)Все они возвращают объект Metric, типизированный через дженерик. Это позволяет напрямую работать с числовыми значениями стандартных метрик или подключать собственные типы для расширенной аналитики.
number является значением по умолчанию.entries следует использовать для глубокого анализа
и поиска узких мест производительности, особенно если метрика
демонстрирует ухудшение.Метрика Metric с дженериком T является универсальным инструментом, который объединяет строгую типизацию, расширяемость и совместимость с аналитикой производительности. Ее правильное использование позволяет строить надежные системы мониторинга и оптимизации веб-приложений.