前端监控:别让你的应用在黑暗中运行

前端监控:别让你的应用在黑暗中运行

毒舌时刻

这应用运行得跟幽灵似的,出了问题都不知道。

各位前端同行,咱们今天聊聊前端监控。别告诉我你还在等用户反馈问题,那感觉就像在没有监控的仓库里放贵重物品——能放,但丢了都不知道。

为什么你需要前端监控

最近看到一个项目,用户反映页面经常崩溃,但开发团队根本不知道问题出在哪里。我就想问:你是在做应用还是在做猜谜游戏?

反面教材

// 反面教材:没有监控 function App() { const [data, setData] = React.useState([]); useEffect(() => { async function fetchData() { try { const response = await fetch('/api/data'); const result = await response.json(); setData(result); } catch (error) { console.error('Error fetching data:', error); } } fetchData(); }, []); return ( <div> {data.map(item => ( <div key={item.id}>{item.name}</div> ))} </div> ); } export default App; 

毒舌点评:这代码,就像在黑暗中开车,出了事故都不知道怎么回事。

正确姿势

1. Sentry 监控

// 正确姿势:Sentry 监控 // 1. 安装依赖 // npm install @sentry/react @sentry/tracing // 2. 初始化 // src/index.js import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import * as Sentry from '@sentry/react'; import { BrowserTracing } from '@sentry/tracing'; Sentry.init({ dsn: 'YOUR_SENTRY_DSN', integrations: [new BrowserTracing()], tracesSampleRate: 1.0, }); ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById('root') ); // 3. 错误边界 // src/ErrorBoundary.jsx import React from 'react'; import * as Sentry from '@sentry/react'; class ErrorBoundary extends React.Component { constructor(props) { super(props); this.state = { hasError: false }; } static getDerivedStateFromError(error) { return { hasError: true }; } componentDidCatch(error, errorInfo) { Sentry.captureException(error, { extra: errorInfo }); } render() { if (this.state.hasError) { return <h1>Something went wrong.</h1>; } return this.props.children; } } export default ErrorBoundary; // 4. 使用错误边界 // src/App.jsx import React from 'react'; import ErrorBoundary from './ErrorBoundary'; function App() { return ( <ErrorBoundary> <div> {/* 应用内容 */} </div> </ErrorBoundary> ); } export default App; 

2. 性能监控

// 正确姿势:性能监控 // 1. 使用 Lighthouse // npm install -g lighthouse // lighthouse https://example.com // 2. 使用 Web Vitals import { getCLS, getFID, getFCP, getLCP, getTTFB } from 'web-vitals'; function sendToAnalytics({ name, delta, id }) { console.log(name, delta, id); // 发送到分析服务 // navigator.sendBeacon('/analytics', JSON.stringify({ name, delta, id })); } getCLS(sendToAnalytics); getFID(sendToAnalytics); getFCP(sendToAnalytics); getLCP(sendToAnalytics); getTTFB(sendToAnalytics); 

3. 用户行为监控

// 正确姿势:用户行为监控 // 1. 使用 Google Analytics // index.html <script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'GA_MEASUREMENT_ID'); </script> // 2. 自定义事件 function trackEvent(eventName, eventParams) { gtag('event', eventName, eventParams); } // 使用 <button onClick={() => trackEvent('button_click', { button_name: 'submit' })}> 提交 </button> 

4. 日志监控

// 正确姿势:日志监控 // 1. 配置日志级别 const LOG_LEVELS = { ERROR: 0, WARN: 1, INFO: 2, DEBUG: 3 }; let currentLevel = LOG_LEVELS.INFO; function log(level, message, data) { if (level <= currentLevel) { const timestamp = new Date().toISOString(); const logMessage = `[${timestamp}] [${Object.keys(LOG_LEVELS)[level]}] ${message}`; switch (level) { case LOG_LEVELS.ERROR: console.error(logMessage, data); // 发送到监控服务 break; case LOG_LEVELS.WARN: console.warn(logMessage, data); break; case LOG_LEVELS.INFO: console.info(logMessage, data); break; case LOG_LEVELS.DEBUG: console.debug(logMessage, data); break; } } } // 使用 log(LOG_LEVELS.ERROR, 'Failed to fetch data', { error: 'Network error' }); log(LOG_LEVELS.INFO, 'User logged in', { userId: 123 }); 

毒舌点评:这才叫前端监控,让你的应用在阳光下运行,任何问题都逃不过你的眼睛。

Read more

AI课堂生成网站丨OPENMAIC丨清华团队开源项目

AI课堂生成网站丨OPENMAIC丨清华团队开源项目

OpenMAIC(谐音“My课”)是一个AI教学平台,它能为你生成一个专属的7x24小时AI教室。在这个教室里,你是唯一的真人学生,而老师、助教和同学都由AI智能体扮演。 * AI老师:负责主讲课程,可以在虚拟白板上实时书写、画图,并进行语音讲解。 * AI助教与同学:会与你实时互动,他们可以提问、发起讨论,模拟真实课堂的临场感。 你只需要输入一个课程主题(如“什么是摩擦力”)或上传一份文档,系统就能自动生成包含幻灯片、随堂测验、互动模拟和项目式学习活动的完整课程。 🎓 主要特点 * 极速课程构建:只需输入关键词或上传文档,AI即可在约30分钟内自动生成一套结构完整的教学包,成本极低。 * 拟真多角色课堂:通过多智能体协同,模拟出教师、助教和不同性格的同学,他们可以说话、在白板上绘画,并与你进行实时讨论,显著增强学习的参与感。 * 跨应用轻量调用:通过内置的OpenClaw集成,用户可以直接在飞书、Slack等主流协作工具中,通过简单的指令触发课程生成。 * 全格式灵活交付:生成的课件支持导出为可编辑的PPT文件或打包为独立的HTML文件,方便二次编辑和使用。

新手必看!用Python手把手教你写第一个AI小工具

新手必看!用Python手把手教你写第一个AI小工具

欢迎文末添加好友交流,共同进步! “ 俺はモンキー・D・ルフィ。海贼王になる男だ!” * 📖 写在前面 * 🎯 项目简介:智能PDF文档助手 * 功能特性 * 项目亮点 * 🛠️ 环境准备 * 2.1 Python环境检查 * 2.2 安装依赖库 * 2.3 获取OpenAI API Key * 📝 项目结构设计 * 💻 核心代码实现 * 3.1 配置文件 (config.py) * 3.2 PDF读取模块 (pdf_reader.py) * 3.3 AI客户端模块 (ai_client.py) * 3.4 主程序入口 (main.py) * 📊 项目功能流程图 * 🎯 使用示例 * 4.

别再贴字幕了!Naiz AI:从语义到像素,全链路重构你的“数字孪生”

别再贴字幕了!Naiz AI:从语义到像素,全链路重构你的“数字孪生”

Naiz AI:打破语言边界,正在重新定义“全球视频内容”的表达主权 当传统翻译还在为对齐字幕发愁时,Naiz AI 已经让你的视频在 100 种语言里不仅“说得溜”,还实现了“口型完美同步”:你的声音,在全球任何角落听起来都像母语。 一、一场让内容创作边界消失的“技术海啸” 2026 年,视频创作领域迎来了一场前所未有的范式转移。如果说过去的视频出海是“戴着枷锁起舞”,那么 Naiz AI 的出现就是彻底打碎了那把名为“语言”的锁。 这不是简单的翻译工具,这是一个现象级的全球表达引擎: * 📈 爆发式增长: 仅仅数月,Naiz AI 处理的视频时长已跨越百万小时,将原本昂贵的专业人工配音周期从“周”缩短到了“分钟”。 * 🌟 顶级创作者的共同选择: 无论是追求极致音质的 YouTube 科技博主,还是需要跨国协作的顶级智库,Naiz AI 的

你以为你在部署 AI 助手,其实也可能在打开一扇“数据侧门”:OpenClaw 安全风险全解析

你以为你在部署 AI 助手,其实也可能在打开一扇“数据侧门”:OpenClaw 安全风险全解析

🔥 个人主页:杨利杰YJlio❄️ 个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》《Python》《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更简单,让重复的工作自动化 你以为你在部署 AI 助手,其实也可能在打开一扇“数据侧门”:OpenClaw 安全风险全解析 * * 1、你以为你在装 AI 助手,其实你可能在给系统加一个“高权限自动化入口” * 2、OpenClaw 和普通 AI 最大的区别,到底在哪里? * 3、我为什么说:OpenClaw 更像“拿到部分权限的数字操作员”? * 4、为什么说 AI 助手不是“更聪明的搜索框”? * 5、OpenClaw 的 5