前端埋点的实践

本文介绍了前端埋点的背景、常见方案及其优缺点,并详细阐述了一种结合声明式组件化和缓冲队列的自定义解决方案,旨在解决手动构造字段、曝光场景的复杂性和代码复用问题。通过封装点击和曝光组件,配合页面曝光和运行时参数管理,实现了埋点代码与业务逻辑的解耦,提升了开发效率。
摘要由CSDN通过智能技术生成

1、前言

开始正文前先介绍一下埋点的概念~,(熟悉的朋友可以略过)

前端埋点: 是一种手段,它的目的是上报相关行为数据,相关人员以数据为依据来分析产品在用户端的使用情况,根据分析出来的结果辅助产品优化、迭代。

BI:商业智能,公司内部做数据分析相关的部门。

2、背景

在流量红利逐渐消失的现在,数据的采集、分析和精细化的运营显得更加重要,所以埋点的需求在互联网产品中是很常见的,目的上面也提到了。我们的追求就是又快又好的做好埋点工作,但是现实却不那么美好;目前我们团队在前端埋点方面存在一些痛点:

在构造埋点字段的时候需要根据 BI 的规则,把4,5个字段构造成一个。这样费时费力还有错误的风险;

一些曝光场景下的点不好打比如:分页列表、虚拟列表;他们的的曝光埋点实现较为繁琐;

逻辑复用问题:特别是曝光相关的点需要在业务代码里面做额外的处理,所以逻辑复用比较弱;

所以我们需要一种适合我们的埋点方案解决我们目前的问题,提升我们的开发效率、获得感,不再为埋点而困扰

3、常见前端埋点方案

我们对目前市场上几种埋点方案进行了一些调研,常规有3种方案:

手动代码埋点:用户触发某个动作后手动上报数据

优点:是最准确的,可以满足很多定制化的需求。
缺点:埋点逻辑与业务代码耦合到一起,不利于代码维护和复用;
可视化埋点:通过可视化工具配置采集节点,指定自己想要监测的元素和属性。核心是查找dom然后绑定事件,业界比较有名的是 Mixpanel

优点:可以做到按需配置,又不会像全埋点那样产生大量的无用数据
缺点:比较难加载一些运行时参数;页面结构发生变化的时候,可能就需要进行部分重新配置
无埋点:也叫“全埋点”,前端自动采集全部事件并上报埋点数据,在后端数据计算时过滤出有用数据

优点:收集用户的所有端上行为,很全面
缺点:无效的数据很多、上报数据量大

4、方案选择

在调研完这些方案后,我们认为上述方案并不完全适合我们,我们需要的方案是把之前不好打,不能打的点给打上。同时也要把埋点的代码与业务逻辑解耦,而且我们的mobile站可以相对平滑的迁移到我们新的埋点库上面来。结合我们目前埋点现状和运营、产品侧的需求我们决定采用 声明式的组件化埋点 + 缓冲队列 方案,走一条适合我们自己的路; 这里说一下我们的思路。

为了处理埋点代码与业务逻辑耦合的问题,我们认为可以在视图层做掉,埋点抽象可以归纳为两大类,点击与曝光。我们可以抽象出两个组件分别处理这两种场景。

在一些场景下快速滑动、频繁点击会在短时间打出大量的点,造成频繁的接口调用,这在mobile端是要避免的,针对这种常见的场景我们引入了缓冲队列,针对不同类型的点应用对应的上报频率

目前对于一些字段采用的是人工拼接,比如 BI 定义的_mspm2等字段,类似这种我们完全可以在库统一处理,既不容易出错,也方便后期拓展。

对于页面曝光,我们约定在埋点库的初始化的配置文件中定义 viewstartviewend 后,埋点库会自动注册关于页面曝光的相关事件,不需要我们再去考虑。

以页面为维度管理埋点数据,一是这样更加清晰便于管理、二是我们之前也是这样管理的,迁移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值