博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue遇上Analytics
阅读量:6882 次
发布时间:2019-06-27

本文共 3655 字,大约阅读时间需要 12 分钟。

在"大数据"背景下, Analytics 这类分析系统在项目中扮演着很重要的角色.

笔者这次主要 以 vue 配上 Google Analytics 做案例演示如何 在项目中做分析记录.

分析系统:

笔者在项目中添加了 Google Analytics 分析大致快满一年了.其实一直并没有太关注这方面.但是年末项目要计划2019年"重构计划".专门花了一些时间看了一下分析数据. 不愧是互联网大佬. 分析数据栏目众多.数据也相当丰富.相当一部分 "重构清单"都参考了这些数据. 笔者这里也是极力推荐大家在项目中使用分析系统.稍具规模的项目在沉淀一段时间之后都能提供相当有价值的参考数据来做预测依据. 笔者知道的有 Google Analytics 和 GrowingIO . Facebook Analytics这些. 就分析系统的挑选 大家可以根据项目的实际需要.

  • analytics.js : 面向国外项目. 免费. 数据记录相当全面.
  • gtag.js : Google Analytics的下一代产品.analytics.js是专注用户跟踪.而gtag的设计是面向Google Marketing Platform旗下的所有产品.包括 Google ADs. Google TagManager等.可以一次配置多款Google产品.
  • GrowingIO : 国内的一家分析产品.公司有项目在使用.'傻瓜式'配置.很多产品喜欢用.带热点图. (笔者认为这种远端配置跟踪热点这种方案使得页面要不断给远端定时发送数据.有点"使用过度")
  • Facebook Analytics : 如果你项目创建了Facebook 开发者用户.还是建议你在项目中去使用它.FB的用户流量相当大. Facebook Analytics 还能帮你追溯到一些用户的基础数据.有利于项目 就人群划分上做出一些决策.

自定义数据字段:

分析系统的'跟踪器'会自动把用户的一些操作发送到操作系统中.但是一般的PV/UV/UA 这些比较基础的数据并不太能满足产品的野心. 分析系统本身也有提供很多 API 能够让我们充分利用起来.

这里主要介绍笔者在项目中如何用到的几个 API : 'fields' , 'event', 'timing','exception', 'social', 'ecommerce'

fields

Vue.use(VueAnalytics, {  id: 'UA-xxx',  checkDuplicatedScript: true,  router,  autoTracking: {    exception: true,    shouldRouterUpdate (to, from) {      // next route path is not the same as the previous      return to.path !== from.path    }  },  // 字段跟踪  fields: {    version: 'v1.2.4'  },  //...})复制代码

'version' 字段用于给用户观察 不同 版本所带来的数据差异

event/timing/exception

/** * @argument { category
, action
, label
, value
} * @description 分类, 动作, 标签, 价值(这里不做事件的价值衡量) */targetEvents (){ this.$ga.event(...arguments)}// vuexexport default { namespaced: true, state:{ // ... api: { submit: 'api/v1/submit' } }, actions: { async submit({state, rootState}, params){ const t0 = performance.now(); const {data, code ,info} = await http.post(state.api.submit, params); const t1 = performance.now(); time(state.api.submit, `${navigator.connection.type} |${navigator.connection.effectiveType} |${navigator.connection.downlink} |${navigator.connection.rtt}`, t1 - t0, rootState.user.cid); event(state.api.submit, info, rootState.user.cid); return data; }, }}// http.jsfunction checkStatus(response) { if (response.status >= 200 && response.status < 300) { return response; } const error = new Error(response.statusText); exception(error); error.response = response; throw error;}export default { get: async (url, params, option) => await fetch(`${url}?${params ? new URLSearchParams(params).toSting() : ''}`, { ...options, ...option }).then(res => res.json()).catch(checkStatus), post: async (url, body, option) => await fetch(url, { ...options, ...option, method: 'POST', body }).then(res => res.json()).catch(checkStatus)}复制代码
  • Event : 主要用于记录用户重要操作. 通常只用于记录 POST 接口的提交状况. 这里主要记录三个维度的数据:[目标接口,服务器提供的信息,目标用户].
  • Timing : 主要用于记录用户接口操作耗时. 这种计时器用在了所有的接口上. 我这里是记录了四个维度数据,分别是: [目标接口, 网络信息, 接口耗时, 目标用户].
  • exception : 接口错误记录

Event 结合 Timing 可以让测试或者产品能够观察到某个 cid 用户每日的特定动作操作状况

social

this.$ga.social('Facebook','Share',`https://www.test.com/?cid=${user.cid}`)复制代码

social主要记录用户在社交平台上的分享事件.

ecommerce

  • addItem
  • addTransaction
  • addProduct
  • addImpression
  • setAction
  • addPromo
  • send

电商专用API.主要记录 添加商品/交易/收藏/评价等动作记录.并没有机会用上.不过用法大体一致.


计时器报表

类型 标签 变量 计时 采样数
api/v1/submit cidA wifi:3g:200 0.3 259
api/v2/submit cidB wifi:4g:225 0.2 124
api/v1/xxxx cidC wifi:4g:225 0.6 122
api/v1/xxxxx cidD wifi:4g:225 0.4 99

事件报表

类型 标签 操作 总数 唯一身份数
api/v1/submit cidA 用户已注册 69(6.24%) 54(x%)
api/v2/submit cidB 缺少必要参数 57(5.21%) 32(x%)

转载于:https://juejin.im/post/5c3e1e0f51882524b77b7130

你可能感兴趣的文章
GNU make manual 翻译( 一百三十五)
查看>>
2012注定是收获的一年,奋斗才刚刚开始
查看>>
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)...
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(16)-权限管理系统-漂亮的验证码...
查看>>
ASP.NET MVC5+EF6+EasyUI 后台管理系统(17)-LinQ动态排序
查看>>
ASPJpeg和ASPUpload组件的一些属性和方法
查看>>
SqlServer基础:Bit类型
查看>>
PostreSQL 的模式创建的代码位于何处
查看>>
java.lang.OutOfMemoryError: Java heap space 解决方法转测试可用
查看>>
linux内存分配方法总结【转】
查看>>
Javascript事件模型系列(四)我所理解的javascript自定义事件
查看>>
PostgreSQL 在何处真正开始写数据
查看>>
[LeetCode] Integer to Roman 整数转化成罗马数字
查看>>
Windows Mobile 6.x 市场将不再提供服务支持
查看>>
小知识~VS2012的xamarin加载失败解决
查看>>
从Linux 访问Windows的文件夹和Windows的共享打印机
查看>>
Delphi 日期格式问题 - is not a valid date
查看>>
nodejs express 启动报错:Error: Cannot find module &#39;xxx&#39;
查看>>
10.7. glusterfs
查看>>
GET和POST的区别及get和post关于请求的编解码的问题
查看>>