Vue 3 + Vuex 埋点实现指南

在现代前端开发中,数据分析和用户行为追踪是不可或缺的部分。本文将介绍如何在 Vue 3 项目中实现埋点功能,具体使用 Vuex 进行状态管理,并通过自定义 Hook 实现埋点逻辑。

目录

  1. 项目结构
  2. 实现埋点逻辑
  3. 使用埋点功能
  4. 总结

1.项目结构

我们将创建一个 xesAnalyticsHook 目录,包含一个 index.js 文件,用于实现埋点逻辑。每个具体的埋点逻辑将分模块存放在单独的文件中,例如 classPlan.jsstudyPlan.js 等。

src/
├── hooks/
│   └── xesAnalyticsHook/
│       ├── index.js
│       ├── classPlan.js
│       ├── studyPlan.js
│       └── ...

2.实现埋点逻辑

2.1index.js文件

index.js 文件是整个埋点逻辑的核心。它负责从 Vue 实例中获取全局属性 $xesAnalytics,并提供一系列封装好的埋点方法。

import { getCurrentInstance } from 'vue'
import { useStore } from 'vuex'
import { createClassPlanAnalytics } from './classPlan'
import { createStudyPlanAnalytics } from './studyPlan'
// ... 其他模块的导入

/**
 * 自定义 Hook,用于封装埋点逻辑
 */
export function useXesAnalytics() {
  // 获取当前 Vue 实例
  const instance = getCurrentInstance()
  // 获取全局属性
  const globalProperties = instance?.appContext?.config?.globalProperties
  // 获取全局埋点对象
  const analytics = globalProperties?.$xesAnalytics

  // 获取 Vuex store
  const store = useStore()
  // 获取教师 ID 和学校 ID
  const teacherId = store?.state?.userDetail?.id
  const schoolId = store?.state?.userDetail?.school?.id

  /**
   * 封装的点击事件埋点方法
   * @param {string} eventId - 事件 ID
   * @param {object} properties - 事件属性
   * @param {function} callback - 回调函数
   */
  function trackClick(eventId, properties = {}, callback) {
    analytics.track(eventId, properties, callback)
  }

  /**
   * 封装的页面浏览事件埋点方法
   * @param {string} eventId - 事件 ID
   * @param {object} properties - 事件属性
   * @param {function} callback - 回调函数
   */
  function trackView(eventId, properties = {}, callback) {
    analytics.view(eventId, properties, callback)
  }

  /**
   * 设置用户属性
   * @param {object} profile - 用户属性
   */
  function setProfile(profile) {
    analytics.setProfile(profile)
  }

  /**
   * 注册页面信息
   * @param {object} params - 页面参数
   */
  function registerPage(params) {
    analytics.registerPage(params)
  }

  // 注册页面信息
  registerPage({
    operator_id: teacherId, school_id: schoolId
  })

  // 具体的埋点逻辑
  const ClassPlanAnalytics = createClassPlanAnalytics(trackClick, trackView)
  const studyPlanAnalytics = createStudyPlanAnalytics(trackClick, trackView)
  // ... 其他模块的实例化

  return {
    trackClick,
    trackView,
    setProfile,
    registerPage,
    ...ClassPlanAnalytics,
    ...studyPlanAnalytics,
    // ... 其他模块的方法
  }
}
2.2classPaln.js文件

classPlan.js 文件定义了具体的埋点方法。每个方法对应一个具体的用户行为事件。 

const f = () => {
  // 默认值
}

export function createClassPlanAnalytics(trackClick = f, trackView = f) {
  return {
    trackClassPlanCreatePlanClick() {
      trackClick('click_CuzANHRD')
    },
    trackClassPlanListView() {
      trackView('view_4l5x8Gf9')
    }
  }
}

3.使用埋点功能

在组件中使用埋点功能非常简单。首先导入 useXesAnalytics,然后解构出需要的埋点方法即可。

<template>
  <el-button @click="handelClick"></el-button>
</template>
<script lang="ts" setup>
import { onMounted } from 'vue'
import { useXesAnalytics } from '@/hooks/xesAnalyticsHook/index.js'

const {
  trackClassPlanCreatePlanClick, trackClassPlanListView,
} = useXesAnalytics()

const handelClick = () => {
  trackClassPlanCreatePlanClick()
  // 其他逻辑
}

// 初始化
onMounted(() => {
  trackClassPlanListView()
})
</script>

4.总结

通过本文的介绍,我们实现了一个基于 Vue 3 和 Vuex 的埋点系统。这个系统通过自定义 Hook useXesAnalytics 封装了埋点逻辑,并在组件中方便地调用这些方法。这样不仅提高了代码的可维护性,还使得埋点逻辑更加清晰和模块化。

⚠️具体实现根据实际情况修改即可

希望这篇文章能帮助你更好地理解和实现 Vue 项目中的埋点功能。如果有任何问题或建议,欢迎在评论区留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值