前端监控实践
常见误区
前端监控是前端开发的重要组成部分,而非可有可无的选项。
常见问题包括:
- '我的代码没问题,不需要监控'——结果用户反馈网站崩溃,自己却一无所知
- '我有日志,还需要什么监控'——结果日志太多,根本找不到问题
- '监控太复杂了,我没时间做'——结果问题频发,用户流失
代码示例
缺乏监控的反面教材
// 反面教材:没有任何监控
function App() {
return (
<div>
<h1>我的网站</h1>
{/* 没有任何错误处理和监控 */}
<button onClick={() => {
const data = fetchData();
processData(data);
}}>
点击我
</button>
</div>
);
}
// 反面教材:简单的 console.log
function fetchData() {
try {
const data = /* 从 API 获取数据 */;
return data;
} catch (error) {
console.log('Error:', error); // 只在控制台打印,没有持久化
return null;
}
}
基于 Sentry 的正确实践
// 安装依赖:npm install @sentry/react @sentry/tracing
import React from 'react';
import ReactDOM ;
;
* ;
{ } ;
.({
: ,
: [ ()],
: ,
: process..,
:
});
.(.()).(
);
* ;
{
() {
(props);
. = { : };
}
() {
{ : };
}
() {
.(error, { : errorInfo });
}
() {
(..) {
;
}
..;
}
}
{ usePerformanceObserver } ;
() {
( {
entries.( {
(entry. === ) {
.(, { : , : { : entry. } });
}
(entry. === ) {
.(, { : , : { : entry. } });
}
});
});
;
}
() {
.(action, { : , : data });
}
() {
start = performance.();
(url, options)
.( {
end = performance.();
duration = end - start;
.(, { : , : { url, : response., duration } });
response;
})
.( {
.(error, { : { url } });
error;
});
}
() {
(
);
}

