前端监控:别等用户告诉你应用崩了

前端监控:别等用户告诉你应用崩了

毒舌时刻

这代码写得跟网红滤镜似的——仅供参考。

各位前端同行,咱们今天聊聊前端监控。别告诉我你还在等用户截图告诉你应用崩了,那感觉就像等邻居来告诉你你家着火了——能知道,但已经晚了。

为什么你需要前端监控

最近看到一个项目,生产环境崩溃了 3 小时,开发团队却一无所知。我就想问:你是在做应用还是在做猜谜游戏?

反面教材

// 反面教材:没有监控 // components/Checkout.jsx 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. 错误监控

// 正确姿势:Sentry 错误监控 // 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'; export function initPerformanceMonitoring() { getCLS(console.log); getFID(console.log); getFCP(console.log); getLCP(console.log); getTTFB(console.log); } // 集成到 Sentry import * as Sentry from '@sentry/react'; 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 { 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> ); } 

毒舌点评:这才叫现代前端,实时监控,问题早发现早解决。

Read more

RainbowKit入门教程:5分钟构建你的第一个Web3应用

RainbowKit入门教程:5分钟构建你的第一个Web3应用 【免费下载链接】rainbowkitThe best way to connect a wallet 🌈 🧰 项目地址: https://gitcode.com/gh_mirrors/ra/rainbowkit RainbowKit 是构建Web3应用的最佳钱包连接解决方案,让开发者能够快速为去中心化应用(DApp)添加安全、美观的钱包连接功能。无论你是React新手还是经验丰富的Web3开发者,RainbowKit都能在5分钟内帮你完成钱包集成!🌈 为什么选择RainbowKit钱包连接解决方案? RainbowKit 是一个基于 React 的库,构建在 wagmi 和 viem 之上,为Web3应用提供开箱即用的钱包管理功能。它支持所有主流钱包,包括 MetaMask、Coinbase Wallet、Rainbow Wallet、WalletConnect 等,让你的用户能够自由选择自己喜欢的钱包进行连接。 RainbowKit提供完整的钱包连接体验,包含新手引导和钱包说明 🌟 RainbowK

(保姆级教程)通过官方API搭建一个自己的QQ群聊机器人

(保姆级教程)通过官方API搭建一个自己的QQ群聊机器人

简介 用官方api做了一个qq群聊机器人的demo,有获取天气、简单编辑待办、从本地发送图片等功能。 建了个群,欢迎来交流( QQ群号:710101225 重新写了个基于nonebot框架的教程,个人认为比官方sdk更容易开发:https://blog.ZEEKLOG.net/Clovertaa/article/details/145452834 获取 机器人demo GitHub仓库:GitHub - ClovertaTheTrilobita/SanYeCao-bot: 一个基于官方API的QQ群聊机器人 官方SDK GitHub仓库:GitHub - tencent-connect/botpy: QQ频道机器人PythonSDK 教程 前置需求 本项目使用conda环境和git操作。如果未安装这两个工具请首先移步 史上最全最详细的Anaconda安装教程-ZEEKLOG博客 Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装-ZEEKLOG博客 (这俩教程我粗略看了下感觉挺好的,如果不适合你那烦请自行百度了qwq) 一

FPGA面试题汇总整理(一)

https://pan.baidu.com/s/1rDsLAXGj8WbX82teSkhuIw?pwd=1234 这份FPGA 系统学习详细资料包是个人花大量时间精心整理的,超多干货全覆盖,从基础到实战一站式搞定,不用再到处薅资料!网盘链接随时可能失效,提取码 1234,先保存再学习,别等失效拍大腿!🔗链接:https://pan.baidu.com/s/1rDsLAXGj8WbX82teSkhuIw?pwd=1234 ———————————————— 前言:社招FPGA面试核心考察「基础功底+项目经验+问题解决能力」,以下100个问题覆盖面试90%高频考点,按「基础概念→编程语法→时序分析→架构设计→调试优化→项目实操→行业拓展」分类,每个问题附详细解答(适配自媒体干货属性,可直接复制使用,重点内容加粗标注),帮你高效备战,避免踩坑。 一、

喂饭级教程:OpenClaw 对接 QQ 机器人,本地/腾讯云都能用

喂饭级教程:OpenClaw 对接 QQ 机器人,本地/腾讯云都能用

文章目录 * 前言 * 一、选对路子:官方 Bot 还是个人号? * 方案 A:QQ 开放平台官方机器人 * 方案 B:个人 QQ 号变身机器人 * 二、环境准备:5 分钟搞定基础设施 * 1. 服务器/电脑要求 * 2. 安装 OpenClaw * 3. 配置大模型 API * 三、方案 A:对接 QQ 开放平台官方机器人 * Step 1:注册开发者并创建机器人 * Step 2:获取三件套凭证 * Step 3:配置 IP 白名单和沙箱 * Step 4:OpenClaw 端配置