每一个前端,都要拥有属于自己的埋点库~
【摘要】 作者:Sunshine_Lin简介sunshine-track 应用于前端监控, 基于 行为上报,实现了 用户行为、错误监控、页面跳转、页面白屏检测、页面性能检测等上报功能。适用于 Vue、React、Angular 等框架功能sunshine-track具备以下功能:✅ 用户行为上报:包括 点击、跳转页面、跳转页面记录数组、请求 等✅ 用户手动上报:提供 Vue 自定义指令 以及add、...
作者:Sunshine_Lin
简介
sunshine-track
应用于前端监控, 基于 行为上报
,实现了 用户行为、错误监控、页面跳转、页面白屏检测、页面性能检测
等上报功能。适用于 Vue、React、Angular
等框架
功能
sunshine-track
具备以下功能:
- ✅ 用户行为上报:包括
点击、跳转页面、跳转页面记录数组、请求
等 - ✅ 用户手动上报:提供
Vue 自定义指令
以及add、report
函数,实现用户手动上报 - ✅ 自定义上报:提供
格式化上报数据、自定义上报函数、自定义决定上不上报
等配置项,更灵活地上报数据 - ✅ 请求数据上报:提供
检测请求返回、过滤请求
等配置项,让用户决定上报哪些请求数据 - ✅ 上报方式:提供
上报方式
配置项,用户可选择img、http、beacon
三种方式,http
方式又支持xhr、fetch
两种,且支持自定义headers
- ✅ 上报数据缓存:可配置
本地缓存、浏览器本地缓存、IndexedDB
三种方式 - ✅ 上报数据阈值:可配置上报数据
阈值
,达到阈值
后进行上报操作 - ✅ 全局点击上报:可通过配置
选择器、元素文本
,对全局DOM节点进行点击上报 - ✅ 页面的性能检测,包括
白屏、FP、FCP、LCP、CLS、TTFB、FID
等
上报数据格式
选项 | 描述 | 类型 |
---|---|---|
uuid |
上报数据的id | string |
type |
上报数据的类型 | string |
data |
上报数据 | any |
time |
上报时间 | number |
status |
上报状态 | string |
domain |
当前域名 | string |
href |
当前网页路径 | string |
userAgent |
当前user-agent | string |
deviceInfo |
设备的相关信息 | object |
安装
使用
全局点击监听
可以通过配置globalClickListeners
来对于某些DOM节点进行点击监听上报
配置上报阈值
上报分为几种:
- 用户行为上报:点击、跳转页面、请求,这些上报数据会缓存着,当达到阈值时再进行上报
- 错误上报:请求报错、代码报错、异步错误,这些是立即上报
- 页面性能上报:白屏、FP、FCP、LCP、CLS、TTFB、FID,这些是立即上报
用户行为上报的阈值默认是 10
,支持自定义 maxEvents
配置缓存方式
如果你想要避免用户重新打开网页之后,造成上报数据的丢失,那么你可以配置缓存方式,通过配置cacheType
:
- normal:默认,本地缓存
- storage:浏览器 localStorage 本地缓存
- db:浏览器 IndexedDB 本地缓存
代码解读
复制代码
app.use(Track, {
...options,
cacheType: 'storage' // 配置缓存方式
})
打印上报数据
可以通过配置 log
,开启打印上报数据
灵活上报请求数据
请求也是一种行为,也是需要上报的,或许我们有这个需求
- 过滤:某些请求我们并不想上报
- 自定义校验请求响应数据:每个项目的响应规则可能都不同,我们想自己判断哪些响应是成功,哪些是失败
格式化上报数据、自定义决定上不上报、自定义上报
如果你想在数据上报之前,格式化上报数据的话,可以配置report
中的format
如果你想要自己决定某次上报的时候,进行取消,可以配置report
中的isReport
如果你不想用这个库自带的上报功能,想要自己上报,可以配置report
中的customReport
手动上报
手动上报分为三种:
- 手动添加上报数据:添加到缓存中,等到达到阈值再上报
- 手动执行数据上报:立即上报
- 自定义指令上报:如果你是 Vue 项目,支持指令上报
如果你是 Vue 项目,可以使用指令v-track
进行上报
配置参数
选项 | 描述 | 类型 |
---|---|---|
projectKey |
项目key | string |
userId |
用户id | string |
report.url |
上报url | string |
report.reportType |
上报方式 | img、http、beacon |
report.headers |
上报自定义请求头,http 上报模式生效 |
object |
report.format |
上报数据格式化 | function |
report.customReport |
自定义上报 | function |
report.isReport |
自定义决定上不上报 | function |
cacheType |
数据缓存方式 | normal、storage、db |
globalClickListeners |
上报状态 | array |
log |
当前域名 | boolean |
maxEvents |
上报阈值 | number |
historyUrlsNum |
需要记录的url跳转数组 | number |
checkHttpStatus |
判断响应数据 | function |
filterHttpUrl |
过滤上报请求数据 | function |
switchs.xhr |
是否开启xhr请求上报 | boolean |
switchs.fetch |
是否开启fetch请求上报 | boolean |
switchs.error |
是否开启错误上报 | boolean |
switchs.whitescreen |
是否开启白屏检测上报 | boolean |
switchs.hashchange |
是否开启hash变化请求上报 | boolean |
switchs.history |
是否开启history变化上报 | boolean |
switchs.performance |
是否开启页面性能上报 | boolean |
结语 & 机会内推
机会:大型外包公司,前后端测试岗内推,多地有岗,东莞、深圳等地急招!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)