前端埋点对于那些营销活动的项目是必须的,它可以反映出用户的喜好与习惯,从而让项目的运营者们能够调整策略优化流程提高用户体验从而获取更多的$。这篇文章将实现一个Vue3版本的埋点上报插件,主要功能有
本项目采用pnpm进行Monorepo环境搭建,因为未来这个项目可能会加入更多的工具包.
因涉及一些执行语句,禁止写入,请联系客服获取
因涉及一些执行语句,禁止写入,请联系客服获取
因涉及一些执行语句,禁止写入,请联系客服获取
因涉及一些执行语句,禁止写入,请联系客服获取
此时我们的packages
目录和play
目录便关联起来的,我们后面就可以愉快的在本地调试了。其中packages
是我们各种包存放的地方,具体我们本次开发的埋点插件v-tracking
便是其中之一。play则是一个Vue3项目用来测试我们的本地包,它的创建方法这里就不再详细说了。最终它的目录结构如下
终端进入v-tracking
,执行pnpm init
让它成为一个包,然后新建index.js
作为入口。
在vue3是通过 app.use(plugin)
的形式引入插件的,它会直接调用插件的install
方法.install
会接收到应用实例和传递给 app.use()
的额外选项作为参数。所以我们在v-tracking/index.js
默认导出一个带有install
函数的对象
因涉及一些执行语句,禁止写入,请联系客服获取
进入paly
执行pnpm add v-tracking
此时你会发现paly
下的package.json
多了个这样的依赖
这样就是表示play
已经关联到本地的包v-tracking@1.0.0
的包了,然后我们在paly
的main.js
引入我们的插件
因涉及一些执行语句,禁止写入,请联系客服获取
启动项目我们会发现install
函数被调用了,并且获取到了传来的额外参数.
点击事件的上报我们提供两种方式,一种是以Vue自定义指令的形式,一种是手动调用上报方法。因为指令形式的点击上报并不能实现异步上报,所以加入手动调用上报的方法
首先我们简单了解一下什么是自定义指令。我们都用过Vue的内置的一系列指令 (比如 v-model
或 v-show
) 等,而Vue还提供了注册自定义指令的函数directive
用法如下,其中el
是我们绑定指令的dom,binding
则是指令传来的一系列参数,比如
因涉及一些执行语句,禁止写入,请联系客服获取
binding则是这样一个对象
因涉及一些执行语句,禁止写入,请联系客服获取
了解完指令我们便可以开始自定义指令click
的开发了。其实很简单,就是监听el
的点击事件然后获取到指令的value
上报给后端即可
因涉及一些执行语句,禁止写入,请联系客服获取
我们在play
的page1.vue
进行绑定指令测试
test1
我们点击test1
便可以在控制台看到我们需要上报的数据
我们可以手动调用上报方法挂载在实例全局即可,在vue3中挂载全局属性的方法是app.config.globalProperties.xxx
,所以我们定义一个全局上报方法$vtrack
因涉及一些执行语句,禁止写入,请联系客服获取
然后我们在page1.vue
中进行使用
因涉及一些执行语句,禁止写入,请联系客服获取
同样的我们可以获取到我们需要的上报数据。
对于页面访问次数或者人数我们可以通过检测路由的变化从而上报当前页面事件。比如在page1
页面我们可以以prefix_/page1
(这个前缀可以由自己来定义)形式上报。但是在插件中如何检测路由变化呢?
起初我想通过监听onhashchange
事件来监听路由变化的,但是经过测试发现Vue中的push事件根本不会触发onhashchange
。所以我便引入了@vue/reactivity
,通过它的reactive
让传入app
实例进行一个响应式包裹,再通过effect
函数监听路由变化从而实现统计每个页面的进入事件,首先安装
因涉及一些执行语句,禁止写入,请联系客服获取
然后引用
因涉及一些执行语句,禁止写入,请联系客服获取
然后在项目中切换路由就会获取到需要上报的事件
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者