-
背景
a. 目前公司针对C端项目埋点要求较高,在项目中手动埋点使得代码冗余杂长;
b. 其他基于原生开发小程序已实现全埋点处理,为了统一需要再uni也采用相同方案; -
思路
拦截点击、页面访问等事件,统一上报埋点信息 -
方案
调试跟踪发现基于uni-cli开发项目,最终编译成原生小程序代码,核心处理是在common/vendor.js;
而common_vendor目前并未找到在运行时能够拦截处理的方案,感兴趣的同学也可以研究一下;
继续跟踪,点击事件是执行patchMPEvent方法处理,咱们只需要对该方案做处理即可达到相同效果;
其他事件思路同理; -
代码
// plugin/tlog.ts import { PluginOption } from 'vite'; /** 点击后拦截插入代码,event为点击对象 */ const injectClickCode = ` console.log(event); if(event.type === 'tap'){ tlog?.track("auto_track_click",'auto',{message: 'just a demo click'}); }; `; export const VitePluginInjectTlogAutoTrack: () => PluginOption = () => ({ name: 'auto-tlog-track', renderChunk(code, chunk) { let tempCode = code; if (chunk.fileName === 'common/vendor.js') { const regx = new RegExp(/patchMPEvent\(event\) {([\s\S]*)/); tempCode = code.replace(regx, `patchMPEvent(event){ ${injectClickCode}; $1`); } return tempCode; } });
// vite.confg.ts import { VitePluginInjectTlogAutoTrack } from './plugins/tlog'; export default defineConfig(({ command, mode }) => ({ plugins: [uni(), VitePluginInjectTlogAutoTrack()] }));

信不过你开车
- 发布:2022-09-30 10:58
- 更新:2022-09-30 10:58
- 阅读:2259
0 个评论
要回复文章请先登录或注册