什么是 Google Analytics

Google Analytics (GA)是一个多平台埋点分析工具,即只要在平台上添加相关的追踪代码(tracking code),GA 就可以监测和收集使用者在平台上的各种行为资料,比如页面停留时长、访问次序、点击了哪些内部链接等等。官方提供了两个SDK,一个是analytics.js,一个是gtag.js。本文用的是官方推荐的gtag.js。

如何正确地初始化

只要把官方提供的脚本内容放到index.html文件的<head></head>标签之间即可。

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-149950392-1"></script>
  <script>
            window.dataLayer = window.dataLayer || []
            function gtag() {
                dataLayer.push(arguments)
            }
            gtag('js', new Date())
			// UA-xxx-x为ID
            gtag('config', 'UA-xxx-x')
  </script>

GA基本用法:页面跟踪与事件跟踪

事件跟踪与事件跟踪是GA最基本最主要的用法。

页面跟踪

一般的网站,只需要在index.html中加个GA的代码就能完成页面跟踪了,但是对于SPA来说并不行,因为路由之间的跳转并没有刷新页面,GA感知不到,因此需要手动触发。在vue-cli的工程中,可使用如下代码简单处理:

router.afterEach((to, from, next) => {
    window.gtag('config', 'UA-xxx-x', {
        page_title: title,
        page_path: page,
        page_location: location
    })
})

事件跟踪

原生的代码是:

window.gtag('event', eventAction, {
    event_category: eventCategory,
    event_label: eventLabel,
    value: eventValue,
    send_to: 'UA-xxx-x'
})

值得一提的是事件四个参数的设置:
event_category: 一般为一个大类,比如品牌brand,视频video等等
eventAction: 一般为一个具体的操作,比如download, play, click等等
event_label: 一般为额外的一些信息,比如具体的品牌ID,视频的title等等
value: 任意的度量值,必须为正的整数,比如表示品牌的价值,视频的时长等等

考虑到以后有可能会更换分析工具,所以我会把接口都封装到一个对象里面,就算以后更换工具,只要接口一致,改变接口的实现即可,使用了代码分装。

代码封装

//google-analyze.js
export default {
    GA_TRACKING_ID: 'UA-xxx-x', //ga的id
    event(eventCategory, eventAction, eventLabel, eventValue) {
        if (window.gtag) {
            window.gtag('event', eventAction, {
                event_category: eventCategory,
                event_label: eventLabel,
                value: eventValue,
                send_to: this.GA_TRACKING_ID
            })
        }
    },
    page(page, title, location) {
        if (window.gtag) {
            window.gtag('config', this.GA_TRACKING_ID, {
                page_title: title,
                page_path: page,
                page_location: location
            })
        }
    }
}

自定义指令

把统计代码和业务逻辑混在一起,总感觉不是很优雅。可以考虑对需要统计的元素添加自定义指令,统一处理上报,当然这种方式不一定适合所有情况。

import ga from 'google-analyze.js'

const plugin = (Vue) => {
  Vue.directive("ga", {
    bind(el, binding) {
      el.addEventListener("click", () => {
        // binding.value 拿到 v-ga 指令的参数
        let { eventCategory, eventAction, eventLabel, eventValue } =
          binding.value;
        ga.event(eventCategory, eventAction, eventLabel, eventValue);
      });
    },

    unbind(el) {
      el.removeEventListener("click", () => {});
    },
  });
};

export default plugin

将封装好的指令v-ga放在main.js中,方便全局调用

import Vue from 'vue'
import gaPulgin from './plugins/analyst'

Vue.use(gaPulgin)

组件内使用v-ga指令
只需要在 template 里声明好统计参数,用户点击则触发上报

<template>
 <button @click="handleClick"
  v-ga="{
  eventCategory: 'button',
  eventLabel: 'button click'
  }" />
</template>

如何检查GA是否正常工作?

使用Chrome的Tag Assistant插件,具体使用可以参考
https://www.cnblogs.com/pheye/p/9014797.html

本篇文章转自简书https://www.jianshu.com/p/e5eaa7de50bc。在此基础上,根据自我的使用场景,对其内容作了简单的补充。

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐