如何在微信小程序中实现一个手动埋点和自动埋点功能

  介绍

如何在微信小程序中实现一个手动埋点和自动埋点功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一、手动埋点

手动埋点就是在每一处需要的地方,都加一段上报埋点的代码。影响代码的阅读体验,且散落的埋点代码不方便管理。
以页面pv为例,我们此前是在每一个页面中上报pv:

//, src/手册/home/index.tsx      import  tracking 得到“。/tracking";//,pageSn 是前端和产品约定的”页面在埋点系统的唯一标识”,比如这个项目首页的标识符是数字,11664   const  pageSn =, 11111;      export  default (),=祝辞,{   ,//useDidShow 是,Taro 专有的,钩,等同于小程序原生,componentDidShow 生命周期,会在页面展示的时候调用。   ,useDidShow((),=祝辞,{   ,//通过统一封装的,sendPv 方法发送,pv 埋点   ,sendPv (pageSn);   ,});   ,return  & lt; View>手动埋点页面& lt;/View>;   };

二、自动埋点

自动埋点可分为全自动埋点和半自动埋点。全自动埋点则是不管需不需要,将所有的点都埋了。前端肯定开心了”以后埋点产品都不要不要找我啦”,可数据同学就哭唧唧了。

比如,腾讯和芋头团队共同推出腾讯有数自动化埋点,接入超级简单,比如配置proxyPage为真实即可“上报所有页面的浏览、离开,分享等事件”,配置自动跟踪为真实即可“自动上报所有元素的利用,改变,longpress,证实事件”。

可从数据量和有效性来说,“全埋”等于“不埋”,因为“全埋”一方面对数据存储量要求很高,另一方面会给我们负责数据清洗的同学带来大量工作。

所以接下来,还是从中寻求平衡,着重看半自动埋点。

1页面曝光(pv)

页面曝光(pv)、理想的上报方式是:

在一个统一的地方(如trackingConf。ts),配置好每个要埋点的页面的标识符(即pageSn)
页面显示后,自动判断下是否需要上报(是否在trackingConf。ts配置文件中),要就直接上报。

具体实现

(1)统一配置埋点字段,pageSn表示页面在埋点系统中的标识符

//, trackingConf.ts   export  default  {   ,“汽车/home/index":, {   11111年,pageSn:   },   };

当然,如果你的业务允许三七二十一,上报所有页面pv(带上路径让产品自己筛选),那(1)这步可以省了,直接看(2),这种方式可称为“光伏全自动埋点”。

(2)封装usePv钩,在页面展示时,获取当前页面pageSn,判断是否要埋pv,要的话发送pv

//, usePv.ts//,获取当前页面,道路,借助,Taro 的getCurrentInstance   export  const  getPath =,(),=祝辞,{   ,const  path =, Taro.getCurrentInstance () .router ? .path  | |,““   ,//去掉开头的,/,比如将,& # 39;/汽车/home/指数# 39;,改为,& # 39;汽车/home/指数# 39;   ,return  path.match (/^ \/*/), ?, path.replace(/^ \/*/,,,,),:,路径;   };//,获取当前页面,pageSn,判断是否要埋,pv,要的话发送,pv//,入参,getExtra 支持携带额外参数   const  usePv =, ({   getExtra,   }:{   ,getExtra吗?(),=祝辞,任何;   },=,{}),=祝辞,{   ,//页面曝光   ,useDidShow((),=祝辞,{   ,const  currentPath =, getPath ();   ,//从,trackingConf 中获取,pageSn   ,const  pageSn =, trackingConf [currentPath] ? .pageSn;   ,console.log(“自动获取,pageSn",, currentPath,, pageSn);   ,if  (pageSn), {   const 才能;extra =, getExtra ?。();//才能,通过统一封装的,sendPv 方法发送,pv 埋点   ,,extra  ? sendPv (pageSn,额外的),:,sendPv (pageSn);   ,}   ,});   };

(3)然后封装页面组件包装材料,使用上述的usePv ():

import  React 得到“react";   {import  View },得到“@tarojs/components";   import  usePv 得到“。/usePv";      function 包装物(Comp), {   ,return  function  MyPage(道具),{   ,usePv ();   ,return  (   & lt;才能View>   & lt;才能Comp 道具{…},/比;   & lt;才能/View>   ,);   ,};   }      export  default 包装材料;

(4)最后在所有页面组件,包一层包装材料即可实现”所有页面按需埋点”:

//, src/汽车/home/index.tsx      const  Index =,包装物((),=祝辞,{   ,return  & lt; View>自动埋点页面& lt;/View>;   });

如何在微信小程序中实现一个手动埋点和自动埋点功能