跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

前端监控实践:主动发现应用崩溃与性能问题

综述由AI生成前端监控的必要性及实施方案。通过对比未监控的错误处理与集成 Sentry 的正确实践,详细说明了错误监控、性能指标采集(Web Vitals)及用户行为追踪的方法。旨在帮助团队从被动接收反馈转为主动发现问题,保障应用稳定性。

魔法巫师发布于 2026/4/5更新于 2026/5/2029 浏览

前端监控实践:主动发现应用崩溃与性能问题

引言

以下示例仅供技术演示参考。

在现代 Web 应用中,生产环境的稳定性至关重要。如果等到用户反馈才知道应用崩溃,往往为时已晚。

为什么需要前端监控

最近有项目在生产环境崩溃了 3 小时,开发团队却一无所知。缺乏有效的监控机制会导致问题难以追踪和定位。

错误示范
// components/Checkout.jsx
import { useState } from 'react';

export default function Checkout() {
  const [loading, setLoading] = useState(false);
  const handleSubmit = async () => {
    setLoading(true);
    try {
      await api.checkout(); // 成功处理
    } catch (error) {
      // 只在控制台打印错误,开发团队看不到
      console.error('Checkout failed:', error);
      setError('支付失败');
    } finally {
      setLoading(false);
    }
  };
  return (
    <button onClick={handleSubmit} disabled={loading}>
      {loading ? '支付中...' : '支付'}
    </button>
  );
}

问题分析:错误仅在控制台输出,无法被监控系统捕获,导致问题发现滞后。

实施建议

1. 错误监控
// src/utils/errorMonitoring.js
import * as Sentry from '@sentry/react';

export function initSentry() {
  Sentry.init({
    dsn: 'YOUR_SENTRY_DSN',
    integrations: [
      new Sentry.BrowserTracing(),
      new Sentry.Replay()
    ],
    tracesSampleRate: 1.0,
    replaysSessionSampleRate: 0.1
  });
}

export function captureError(error) {
  Sentry.captureException(error);
}

export function captureMessage(message) {
  Sentry.captureMessage(message);
}

使用示例:

// components/Checkout.jsx
import { captureError } from '../utils/errorMonitoring';

const handleSubmit = async () => {
  try {
    await api.checkout();
  } catch (error) {
    captureError(error);
    setError('支付失败');
  }
};
2. 性能监控
// src/utils/performanceMonitoring.js
import { getCLS, getFID, getFCP, getLCP, getTTFB } from 'web-vitals';
import * as Sentry from '@sentry/react';

export function initPerformanceMonitoring() {
  getCLS(console.log);
  getFID(console.log);
  getFCP(console.log);
  getLCP(console.log);
  getTTFB(console.log);
}

export function sendToSentry({ name, delta, id }) {
  Sentry.metrics.distribution(name, delta, { tags: { id } });
}

getCLS(sendToSentry);
getFID(sendToSentry);
getLCP(sendToSentry);
3. 用户行为监控
// src/utils/userMonitoring.js
import * as Sentry from '@sentry/react';

export function trackEvent(eventName, data) {
  Sentry.captureEvent({ message: eventName, extra: data });
}

export function trackClick(element, eventName) {
  element.addEventListener('click', () => {
    trackEvent(eventName, { timestamp: new Date().toISOString() });
  });
}

使用示例:

// components/Button.jsx
import { useRef, useEffect } from 'react';
import { trackClick } from '../utils/userMonitoring';

export default function Button({ onClick, children }) {
  const buttonRef = useRef(null);
  useEffect(() => {
    if (buttonRef.current) {
      trackClick(buttonRef.current, 'button_clicked');
    }
  }, []);
  return (
    <button ref={buttonRef} onClick={onClick}>
      {children}
    </button>
  );
}

总结

通过集成 Sentry 和 Web Vitals,可以实现对错误、性能指标和用户行为的实时监控。这有助于团队从被动接收反馈转变为主动发现问题,从而提升线上应用的稳定性和用户体验。

目录

  1. 前端监控实践:主动发现应用崩溃与性能问题
  2. 引言
  3. 为什么需要前端监控
  4. 错误示范
  5. 实施建议
  6. 1. 错误监控
  7. 2. 性能监控
  8. 3. 用户行为监控
  9. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 前端部署实战:打通开发与生产最后一公里
  • 基于 Python 的单脉冲雷达导引头回波生成技术
  • Python 爬虫技术实战:技能体系与合规变现路径
  • Python 开源 AI 模型引入及测试全流程
  • Python 开源 AI 模型引入与测试全流程实战
  • Linux 下基于 Docker 部署 Android 模拟器及远程访问方案
  • C++ AIGC 吞吐量测试实战:5 个关键指标
  • Python 开源 AI 模型引入及测试全流程实战
  • Python 开源 AI 模型引入与测试全流程实战
  • 优雅训服大模型:深入理解与实战 Prompt 技巧
  • 前端请求分层与自动接口生成方案
  • Django Web 框架实战:从基础配置到产品管理系统
  • OpenClaw 本地部署飞书机器人配置指南
  • GLM-4-9B-Chat-1M 实战:vLLM 加速与 Chainlit 前端集成
  • 低代码 AI 架构助力灵活智能架构落地
  • 基于 Python 与开源 AI 构建本地智能问答系统
  • Python+AI 实战:搭建本地智能问答机器人
  • 图形管线与渲染引擎的 C++ 架构:模块化与跨平台实践
  • Django REST Framework 企业级 API 架构实战
  • 前端缓存策略最佳实践

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online