前端业务埋点-SDK实践
最近项目需要采集用户的行为数据, 从而进行分析得到页面点击量、访问量、访问路径等重要数据, 为运营和业务人员提供精准数据,为产品优化和精细化运营提供数据支持。
埋点方式选择
这里采用代码侵入式埋点的方式进行、 SDK 提供 点击事件、曝光事件、页面时长进行上报
- 点击事件(用户每点击一次按钮、商品、区块.. 就记录一次数据)
- 曝光事件(专区、活动、商品…用户可见)
- 页面时长(活动、页面 停留时间)
埋点方式实现
点击事件
如何让前端同事更轻松的捕获数据、这里实现了 dom 自定义事件实现自动上报, 在 vue 中也提供了指令 如有特殊业务场景也可以使用手动进行上报。
1 | // 自动上报 |
页面时长
页面时长统计, 我们可以用时间戳来算出用户停留的页面时长。
页面离开 - 页面进入 = 停留时长。
1 | // 单页应用 |
这样的话大多数场景都能够满足, 但是还有特殊场景无法满足。
如 PC 端 浏览器 Tab 选项卡切换、 APP 切换应用等。
这时候就需要另外的方案, Page Visibility API 能够解决这个问题
1 | document.addEventListener("visibilitychange", () => { |
曝光
埋点上报
埋点上报
SDK
初始化
参数
参数 | 必填 | 默认值 | 类型 | |
---|---|---|---|---|
debug | 否 | false | bool | 开启调试模式 |
config | 否 | object | {} | 你的配置文件, 会在上报时传给后端 |
url | 是 | ‘’ | string | 请求地址 |
method | 否 | img | string | 请求方式 GET、POST、SEND_BEACON |
enableHeatMap | 否 | false | bool | 开启坐标上传 position |
enableVisibilitychange | 否 | false | bool | 开启页面可见监听, 如开启此功能 registerVueRouterEvent 传参可能为 null |
方法
方法名 | 说明 | 参数 |
---|---|---|
setConfig | 设置全局参数 | Options |
sendTracker | 手动上报 | {自定义} |
initDirectives | 初始化 vue2 指令 | Vue |
registerVueRouterEvent | 初始化 VueRouter 监听 | VueRouter, callback({to, from , secound,…}, callback) |
registerErrorEvent | 全局异常报错 | vm: Vue 对象, errorCallback((errorMsg, pageInfo) => {}) 异常回调 |
1 | import SimpleJsTracker from "simple-js-tracker"; |
未完待续…
参考:
腾讯二面:现在要你实现一个埋点监控 SDK,你会怎么设计?
为什么通常在发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片?
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 L1uqi!
评论