A modern, lightweight performance monitoring SDK for web applications. Monitor Core Web Vitals (LCP, FCP, FID, CLS, TTFB) with sendBeacon support.
npm install web-performance-monitor-sdk一个现代化的、轻量级的Web应用性能监控SDK,专注于现代浏览器,提供简洁易用的API。
- 🚀 现代化设计 - 专为现代浏览器设计(Chrome、Safari、Firefox、Edge),代码简洁高效
- 📊 核心性能指标 - 监控FCP、LCP、CLS、FID、TTFB等Core Web Vitals
- 🔧 灵活配置 - 支持多种输出方式:console、sendBeacon、fetch、自定义
- 🐛 错误监控 - 可选的JavaScript错误和资源加载错误监控
- 📦 轻量级 - 无外部依赖,体积小巧
- 🎯 TypeScript支持 - 完整的类型定义
- 🔍 调试友好 - 内置调试模式,便于开发调试
- 🌐 自动数据增强 - 自动采集设备信息、网络信息、资源加载时间等
- 🔌 通用适配 - 适用于任何Web应用,无特定框架依赖
``bash`
npm install performance-monitor
`javascript
import PerformanceMonitor from 'performance-monitor';
// 最简单的使用方式 - 输出到控制台
const monitor = new PerformanceMonitor({
output: 'console',
debug: true
});
`
`javascript
// 使用sendBeacon发送数据
const monitor = new PerformanceMonitor({
output: 'sendBeacon',
endpoint: 'https://your-api.com/performance',
sampleRate: 0.1 // 10%采样率
});
// 使用fetch发送数据
const monitor = new PerformanceMonitor({
output: 'fetch',
endpoint: 'https://your-api.com/performance'
});
`
`javascript`
const monitor = new PerformanceMonitor({
output: 'custom',
customReporter: (metrics) => {
// 自定义处理逻辑
console.log('Custom metrics:', metrics);
// 发送到你的分析平台
analytics.track('performance', metrics);
}
});
`javascript`
const monitor = new PerformanceMonitor({
output: 'console',
enableErrorTracking: true,
debug: true
});
| 选项 | 类型 | 默认值 | 描述 |
|------|------|--------|------|
| output | 'console' \| 'sendBeacon' \| 'fetch' \| 'custom' | 'console' | 输出方式 |endpoint
| | string | - | 数据发送的URL端点 |customReporter
| | function | - | 自定义输出函数 |enableErrorTracking
| | boolean | false | 是否启用错误监控 |enableResourceTiming
| | boolean | false | 是否启用资源监控 |sampleRate
| | number | 1 | 采样率 (0-1) |debug
| | boolean | false | 是否启用调试模式 |
主要的监控类。
#### 构造函数
`typescript`
new PerformanceMonitor(config?: PerformanceMonitorConfig)
#### 方法
##### getMetrics(): PerformanceMetrics
获取当前收集的性能指标。
`javascript`
const metrics = monitor.getMetrics();
console.log(metrics);
// 输出: { fcp: 1200, lcp: 2500, fid: 50, cls: 0.05, ttfb: 300 }
##### getDetailedMetrics(): Record
获取详细的性能指标信息,包括评分和时间戳。
`javascript`
const detailedMetrics = monitor.getDetailedMetrics();
console.log(detailedMetrics);
// 输出: {
// fcp: { value: 1200, score: 'good', timestamp: 1640995200000 },
// lcp: { value: 2500, score: 'good', timestamp: 1640995201000 }
// }
##### getErrorCount(): number
获取错误统计数量。
`javascriptTotal errors: ${errorCount}
const errorCount = monitor.getErrorCount();
console.log();`
##### reportMetrics(): void
手动报告当前收集的所有性能指标。
`javascript`
monitor.reportMetrics();
##### disconnect(): void
停止性能监控。
`javascript`
monitor.disconnect();
##### isReady(): boolean
检查监控器是否已初始化。
`javascript`
if (monitor.isReady()) {
console.log('Performance monitoring is active');
}
##### updateConfig(newConfig: Partial
更新配置。
`javascript`
monitor.updateConfig({
debug: true,
sampleRate: 0.5
});
- Good: ≤ 1.8s
- Needs Improvement: 1.8s - 3.0s
- Poor: > 3.0s
- Good: ≤ 2.5s
- Needs Improvement: 2.5s - 4.0s
- Poor: > 4.0s
- Good: ≤ 100ms
- Needs Improvement: 100ms - 300ms
- Poor: > 300ms
- Good: ≤ 0.1
- Needs Improvement: 0.1 - 0.25
- Poor: > 0.25
- Good: ≤ 800ms
- Needs Improvement: 800ms - 1.8s
- Poor: > 1.8s
- Chrome 60+
- Firefox 55+
- Safari 11+
- Edge 79+
需要支持以下API:
- PerformanceObserver
- PerformanceEntry
- sendBeacon (可选)
- fetch (可选)
`bash安装依赖
npm install
MIT License
欢迎提交Issue和Pull Request!