Vue组件切换后停留时长统计方法

声明:本文由我与葛先生无差异地合作完成。

需求背景:

有的项目需要采集用户在每个页面的停留时长(毫秒数)。采集工作由前端进行,然后发送给后端。

前端实现:

  1. /router/index.js中设定一个全局的前置导航守卫。

  2. /router/index.js中声明两个全局变量,分别为:

    startTime:为记录第一次进入路由组件或者进入上一个路由组件的时间。

    currentTime:为记录每次路由进入的时间戳。

  3. 在前置导航守卫的 to 中进行逻辑处理。如果to存在,则说明跳转发生。

  4. 每次计算时间差时候,不要忘记再次初始化startTime。

实现代码:

let startTime = Date.now()
let currentTime

router.beforeEach((to, from, next) => {
  // 如果to存在,则说明路由发生了跳转
  if (to) {
    // 第一步:页面跳转后记录一下当前的时间 currentTime
    currentTime = Date.now()

    // ------------
    // 第二步:在这里把 currentTime - startTime 的 差值 发送给后端
    // ------------
    
    // 第三步:每次都要初始化一下 startTime
    startTime = Date.now()
  }
  next()
})

Demo代码:

let startTime = Date.now()
let currentTime

router.beforeEach((to, from, next) => {
  if (to) {
    currentTime = Date.now()
    console.log('startTime = ', startTime)
    console.log('用户由 ', from.path, ' 页面 跳转到 ', to.path, ' 页面,在 ', from.path, ' 页面停留了 ', currentTime - startTime, '毫秒。转换成秒数约为:', parseInt((currentTime - startTime) / 1000))
    startTime = Date.now()
    console.log('======== 分割线 ========')
  }
  next()
})

请大家指教。

发布了3 篇原创文章 · 获赞 6 · 访问量 70

猜你喜欢

转载自blog.csdn.net/qq_45743738/article/details/105613388
今日推荐