如何在Vue单页面中进行业务数据的上报

作者:蚊子博客 时间:2024-04-26 17:42:13 

概述

业务数据的上报主要分为:

  • 各个路由的PV上报;

  • 用户的点击行为上报;

  • 用户操作结果(分享是否成功)的数据上报等;

通用和必须上报的数据,均在上报的代码中进行固定,比如设备信息、用户信息、cookie等都需要上报的数据,在上报前处理完成,需要异步获取且数据固定的,做好存储,防止每次都要重新获取;其他额外的数据,通过对外暴露的send方法进行传递。

比如获取信息这块,客户端给到的jsapi,有可能只能异步调用,那么我们就可以这么处理:


function getAppInfo() {
   let appInfo = {};

return ()=> {
       if (appInfo.deviceId) {
           return Promise.resolve(appInfo);
       } else {
           return new Promise((resolve, reject) => {
               ABB.getAppInfo(info => {
                   if (info.deviceId) {
                       appInfo = info;
                       resolve(appInfo);
                   } else {
                       reject(new Error('get AppInfo error'));
                   }
               })
           })
       }
   }
}

const AppInfo = getAppInfo();
console.log( AppInfo() );

1. 各个路由的PV上报

各个路由的PV上报可以通过vue router的afterEach来实现,每次路由刷新时,afterEach方法都会执行,那么我们在这里进行PV的上报:


// 每个hash路由的PV上报
router.afterEach((to)=>{
   // to为当前已打开的页面,to.name为在router/index.ts中设定的name
   dataBoss.sendPV(to.name);
})

2. 用户点击行为的上报

用户点击行为的上报,之前是在每个点击的业务代码最后,进行一次点击上报。不过这样一个不好的地方是,必须为每个需要上报的点击元素添加一段业务代码,同时,如果多个点击行为共享某个业务片段时,需要进行点击区分:


methods: {
   myClick(value, prarams, act) {
       // ... 业务逻辑的处理

// 数据的上报
       wzp.send({
           act: act,
           pageSource: 'MainPage'
       })
   }
}

现在,我们利用Vue中的自定义指令来实现点击行为的上报,上报的处理与业务代码进行分割:


// 自定义指令的官方文档: https://cn.vuejs.org/v2/guide/custom-directive.html
// 自定义boss指令
// bind: 只对该元素绑定一次
// el: 触发时的DOM元素
// binding.value: 传入的值
// 使用 v-boss="{page: 'MainPage', sop: 'donate'}"
Vue.directive('boss', {
   //
   bind: function (el: HTMLElement, binding: any) {
       el.addEventListener('click', ()=>{
           // 绑定click事件,触发后进行数据上报
           Vue.prototype.$dataBoss.send(binding.value)
       })
   }
})

自定义v-boss指令后,我们就可以在元素上使用这个指令后:


<!-- 为用户头像添加点击数据上报 -->
<div class="avatar" v-boss="{pageName: 'MainPage', sop: 'sop_own_click'}" @click="linkTo">
   <img :src="user.avatar" :alt="user.nickname">
</div>

3. 用户操作结果的数据上报

这里的数据上报是用户点击行为之后的结果上报,比如用户点击了分享按钮,那么最终他是真的分享成功了,还是中途又取消了。这种数据的上报,可以分析出用户从意图操作到最终实现的一个流失情况。

操作结果的数据上报,依赖于客户端或者接口给反馈的结果,这就需要在业务代码中实现了,定义一个全局变量$dataBoss,通过这个来上报数据:

比如分享是否成功的监控:


// 发起分享
handleShare() {
   share.show();
   share.on('shareResult', res => {
       this.$dataBoss.send({
           sop: 'share_success'
       });
   })
}

根据接口中的数据进行上报:


handleUser() {
   jsonp(url).then(result => {
       this.$dataBoss.send({
           kv: {
               money: 20
           }
       });
   })
}

来源:https://www.cnblogs.com/xumengxuan/p/10682338.html

标签:vue,业务数据
0
投稿

猜你喜欢

  • Pycharm 2019 破解激活方法图文详解

    2023-10-31 10:49:04
  • ThinkPHP php 框架学习笔记

    2023-09-10 08:20:32
  • 大数据量时提高分页的效率

    2024-01-25 09:07:37
  • 基于Python os模块常用命令介绍

    2023-09-09 01:53:43
  • pyinstaller打包后,配置文件无法正常读取的解决

    2022-12-17 18:22:09
  • golang高并发的深入理解

    2023-06-19 09:12:01
  • ASP获取网址或当前地址代码

    2008-04-07 20:19:00
  • element弹窗表格的字体模糊bug解决

    2024-04-18 10:53:25
  • 对PyTorch中inplace字段的全面理解

    2022-11-15 13:52:24
  • python3.6实现学生信息管理系统

    2021-02-09 20:54:48
  • Python中的list.sort()方法和函数sorted(list)

    2021-07-29 17:02:23
  • MYSQL METADATA LOCK(MDL LOCK) 理论及加锁类型测试

    2024-01-23 11:16:46
  • SQL Server 2005数据转换服务设计问题集锦

    2008-12-26 17:29:00
  • 关于xmlhttp乱码的解决方法

    2008-09-24 17:20:00
  • 深入浅析pycharm中 Make available to all projects的含义

    2023-08-26 00:59:06
  • web前端vue之CSS过渡效果示例

    2024-04-10 10:33:20
  • django使用图片延时加载引起后台404错误

    2023-11-13 14:51:08
  • 论文查重python文本相似性计算simhash源码

    2023-02-05 18:11:35
  • 处理HTML代码的若干函数

    2009-08-21 13:21:00
  • pytorch进行上采样的种类实例

    2023-11-28 14:02:03
  • asp之家 网络编程 m.aspxhome.com