埋点--Vue前端通过自定义指令实现埋点功能

2023-11-05

需求

        项目新版本新功能,需要再新页面添加埋点功能,记录用户的使用情况和使用习惯。因为前端项目使用的是Vue,所以选择使用Vue的自定义指令来实现埋点功能;

埋点,主要记录  “谁  什么时候  做了什么事情”,直接上代码:

1. 自定义指令

import Vue from 'vue'
// 自定义埋点指令
Vue.directive('track', {
  //钩子函数,只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置
  /*
   * el:指令所绑定的元素,可以用来直接操作 DOM
   * binding:一个对象,包含以下 property:
   *   name:指令名,不包括 v- 前缀。
   *   value:指令的绑定值,例如:v-my-directive="1 + 1" 中,绑定值为 2。
   *   expression:字符串形式的指令表达式。例如 v-my-directive="1 + 1" 中,表达式为 "1 + 1"。
   *   arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 "foo"。
   *   modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。
   * vnode:Vue 编译生成的虚拟节点
   */
  bind: (el, binding, vnode) => {
    if (binding.value) {
      //这里参数是根据自己业务可以自己定义
      let params = {
        currentUrl:binding.value.currentUrl,
        actionType:binding.value.actionType,
        frontTriggerType:binding.value.triggerType,
        businessCode:binding.value.businessCode,
        behavior:binding.value.behavior,
        service:'xxx',
      }
      //如果是浏览类型,直接保存
      if (binding.value.triggerType == 'browse'){
        //调用后台接口保存数据
        api.eventTrack.saveEventTrack(params);
      } else if (binding.value.triggerType == 'click'){
        //如果是click类型,监听click事件
        el.addEventListener('click', (event) => {
          //调用后台接口保存数据
          api.eventTrack.saveEventTrack(params);
        }, false)
      }

    }
  }
})

2.需要再main.js中引入

import './directive/track'

3.在需要添加埋点的标签上添加自定义指令就可以

  如果是浏览类型记录,triggerType写为browse

<div class="app-online-list" v-track="{triggerType:'browse',currentUrl: $route.path,behavior:'浏览xxx功能',businessCode: 19,actionType:'xxx-view'}">
</div>

 如果记录点击事件,triggerType写为click

<div class="app-online-list" v-track="{triggerType:'click',currentUrl: $route.path,behavior:'点击xxx按钮',businessCode: 19,actionType:'xxx-click'}">
</div>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

埋点--Vue前端通过自定义指令实现埋点功能 的相关文章

  • 【C语言】二分查找(含图解)

    文章目录 1 二分查找思想 2 代码实现 2 1 未封装函数 2 2 封装函数 使用while循环 2 3 封装函数 使用递归 1 二分查找思想 二分法 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法 其思想就是不断地将有序查找表
  • 5.2 可变参数

    5 2 可变参数 Lua函数可以接受可变数目的参数 和C语言类似在函数参数列表中使用三点 表示函数有可变的参数 Lua将函数的参数放在一个叫arg的表中 除了参数以外 arg表中还有一个域n表示参数的个数 例如 我们可以重写print函数
  • JAVA根据模板生成PDF文件并导出

    JAVA根据模板生成并导出PDF 实现功能 根据模板生成PDF文件 模板文件参数可配 可手动修改 一 PDF导出效果 先看一下导出的demo文件 具体样式可手动修改 下图为demo pdf ftl导出PDF文件 下图为list pdf ft
  • 图像分割之Unet解析及实现代码

    Unet解析及实现代码 论文连接 https arxiv org pdf 1505 04597 pdf 源码连接 https github com FENGShuanglang unet 图像分割 Unet网络结构详解 Unet网络结构 o

随机推荐

  • c++ auto关键字使用

    C 11 auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型 类似的关键字还有decltype 举个例子 int a 10 auto au a a 自动类型推断 au a为int类型 cout lt lt typei
  • 在 NLP 中训练 Unigram 标记器

    介绍 单个标记称为 unigram Unigram 标记器是一种只需要一个单词来推断单词的词性标记器类型 它有一个单词的上下文 NLTK库为我们提供了UnigramTagger 并从NgramTagger继承而来 在本文中 让我们了解 Un
  • UDP实现点对点聊天(多线程)-C语言

    UDP实现点对点聊天 多线程 服务器端 操作步骤 1 编译 gcc UDPM c lws2 32 lmycon lwinmm o UDPM exe 2 运行 UDPM include
  • umi框架编写简单的验证码登录

    首先我们需要先创建一个layouts的文件夹 用来存储跳转动画的文件 layouts的文件夹和pages同级 然后在pages中创建一个login文件夹用来存储登录文件 然后再里面创建login和index文件开始编写代码 接下来就是废话不
  • 开开心心带你学习MySQL数据库之第六篇下

    插入查询结果 把查询和新增联合起来 把查询结果作为新增的数据 例子 把student1表的查询结果作为新增数据插入到student2表中 create table student1 id int name varchar 20 create
  • 英伟达闲着没事,做了一个超级逼真的人脸生成AI系统!

    Nvidia 英伟达的人脸面部表情方法真的是GAN 风格 一种新的生成性对抗网络方法让技术观察者摸不着头脑 图像如何虚假而又看起来如此真实 研究人员在一段视频中说 我们想出了一种新的发生器 可以自动学习分离图像的不同方面而无需任何人为监督
  • 3阶Hermitian正定矩阵Cholesky分解通用表达式

    pdf文件 算法原理 将一个 n n n阶Hermitian正定矩阵 A A A分解为一个下三角矩阵 L L
  • java拦截通过url访问页面,必须通过登录页面访问目标页面

    在web xml中配置过滤
  • ROS AGV 笔记

    Ubuntu18 04 install of ROS Melodic 1 Installation 1 1 Configure your Ubuntu repositories 1 2 Setup your sources list sud
  • STM32_USART

    1 时钟使能 RCC APB2PeriphClockCmd RCC APB2Periph USART1 RCC APB2Periph GPIOA ENABLE USART1 GPIOA 2 引脚配置 GPIO InitTypeDef GPI
  • 二叉树的层序遍历(广度优先遍历)

    二叉树的层序遍历 Name 二叉树的层序遍历 Copyright Author lkm Date 01 04 22 21 47 include
  • Web开发权威指南笔记(三)

    书 Web开发权威指南 美 Chris Aquino Todd Gandee著 为3rd实战项目Chattrbox练习以及代码整理 全为个人借鉴本书产出 若需要转载请联系通知我 请尊重原创 谢谢 整理了大概8天了 内容比较多 很多重点都整理
  • Eigen: C++开源矩阵计算工具——Eigen的简单用法

    Eigen非常方便矩阵操作 当然它的功能不止如此 由于本人只用到了它的矩阵相关操作 所以这里只给出了它的一些矩阵相关的简单用法 以方便快速入门 矩阵操作在算法研究过程中 非常重要 例如在图像处理中二维高斯拟合求取光斑中心时使用Eigen提供
  • Android优秀开源项目汇总

    UI相关 图片 Android Universal Image Loader com nostra13 universalimageloader 异步加载 缓存 显示图片 ImageLoader com novoda imageloader
  • multipartFile.getOriginalFilename();不能获取原文件名称,也就是含有路径名

    一直在debug 发现只能获取文件名 进去看源代码 翻译过来就是 返回客户端文件系统中的原始文件名 p 这可能包含路径信息 取决于所使用的浏览器 但它通常不会与opera浏览器有关 只是可能包含路径名 所以我试了360浏览器 谷歌 火狐都只
  • 进程和线程的区别和联系

    一 简介 进程 进程是操作系统资源分配的基本单位 进程是指正在运行的程序实例 每个进程都有自己的内存空间 代码 数据和资源 操作系统通过管理进程来控制计算机的资源分配 每个进程都有一个唯一的标识符 称为进程 ID 以便操作系统可以识别和管理
  • Adapter 适配器基础讲解

    Adapter 适配器基础讲解 1 MVC模式的简单理解 在开始学习 Adapter 之前我们要来了解下这个 MVC 模式概念 举个例子 大型的商业程序通常由多人一同开 发完成 比如有人负责操作接口的规划与设计 有人负责程序代码的编写如果要
  • 表情包(图片)自生产——Python爬虫xpath实现

    文章目录 严正声明 爬虫应严格遵守国家的相关法律法规 坚决做一只文明爬虫 前言 一 知识准备 二 功能解析与实现 1 引入库 2 请求准备 3 发起请求 4 数据解析 5 数据保存 6 成果展示 三 普通代码展示 四 封装代码展示 总结 严
  • 核心基础知识1

    图片相关 安卓选择ETC2 8bit 苹果选择ETC PVRTC 4 bit RGBA32 32代表RGBA4个通道总共32位 每一个通道是8位 通常图片的格式有jpg和png jpg代表的是有损压缩无透明 png无损压缩有透明 显示同一张
  • 埋点--Vue前端通过自定义指令实现埋点功能

    需求 项目新版本新功能 需要再新页面添加埋点功能 记录用户的使用情况和使用习惯 因为前端项目使用的是Vue 所以选择使用Vue的自定义指令来实现埋点功能 埋点 主要记录 谁 什么时候 做了什么事情 直接上代码 1 自定义指令 import