vue前端埋点 - 神策埋点

日常项目开发中,涉及到一些例如支付数据,点击捕获错误等信息,埋点日志的上报是必不可少的,项目中埋点的简单封装,作以参考。

埋点安装

标题也有说,我们用的是 神策埋点平台 提供的JS SDK

pnpm install sa-sdk-javascript

参数配置

一般情况我们都在项目外层 utils文件中创建一个 sensor.js 文件,创建一个埋点实例

import sensors from 'sa-sdk-javascript'

// 一些动态的参数需要我们和服务端商议自行填写

sensors.init({

    name: 'sensors',
    
    server_url: '', // 服务端接受数据地址
    
    show_log: false, // 不输出log到控制台

    cross_subdomain: false, // 不在根域下设置cookie
    
    is_track_single_page: true, // 表示是否开启单页面自动采集 $pageview 功能,SDK 会在 url 改变之后自动采集web页面浏览事件 $pageview。
    
    heatmap: {
    
  // 是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
  clickmap: 'not_collect',
  
  // 是否开启触达注意力图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
  scroll_notice_map: 'not_collect'
  
}
})

sensors.registerPage({
    current_url: location.href,
    referrer: document.referrer
})

sensors.quick('autoTrack')

window.sensors = sensors

export default sensors

添加对应文件 可根据项目需求 自定义指令(directive)

自行封装sendSensors.js

import { APP_ENV } from '@/config'
import moment from 'moment'
import { userInfoStore } from '@pinia';
/**
 * 神策数据埋点 主站神策数据初始化后挂载到window对象
 * @param {*} eventName 自定义事件名称
 * @param {*} data 数据
 * @param {*} callback
 * @param {*} alwaysCallback
 */

export default function sensorsTrack (
  eventName,
  data = {},
  callback = () => {},
  alwaysCallback = true
) {

  try {
    const prefix = APP_ENV === 'production' ? '' : APP_ENV + '_'
    if (!eventName) {
      callback()
      return
    }
    const userStore = userInfoStore()
    let commonPonintsParams = {}
    if (userStore) {
      const { id, name, school_id, school_name } = userStore
      // 通用参数 为了保证获取参数的时机不过于提前,公共参数不提取到函数外
      commonPonintsParams = {
       
      }
    }
    const paramTemp = Object.assign({}, commonPonintsParams, data)
    if (window.sensors) {
      eventName = prefix + eventName
      window.sensors.track(eventName, paramTemp, () => {
        callback()
      })
    } else if (alwaysCallback) {
      callback()
    }
  } catch (e) {
    console.log(e)
    callback()
  }
} 

当然别忘了 全局 挂载 在项目入口 main.js 挂载

//main.js

import App from './App.vue';
import '@/utils/sensors';
import pinia from './pinia';
import router from '@/router';

// 创建vue实例 
const app = createApp(App);

app.use(pinia);
app.use(router); 
app.mount('#app');

作者:攀登的牵牛花
链接:https://juejin.cn/post/7287562282670227515
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 在组件内使用:

// 引入
import sensorsTrack from '@/utils/sendSensors.js'

// 需要上报的事件 || 函数内添加
sensorsTrack('事件名', 上报参数, callback()) || sensorsTrack('事件名', 上报参数)

 

 

很抱歉,根据您提供的引用内容,我无法直接回答您的问题。但是,我可以为您提供有关Angular项目神策埋点的一些信息。 神策分析是一种数据分析工具,可以帮助您跟踪和分析用户在应用程序中的行为。在Angular项目中,您可以使用神策分析来实现埋点,以便收集和分析用户的行为数据。 以下是一些实现Angular项目神策埋点的步骤: 1.安装神策分析SDK 您可以使用npm包管理器安装神策分析SDK。在终端中运行以下命令: ```shell npm install sa-sdk-javascript --save ``` 2.在Angular项目中引入SDK 在您的Angular项目中,您需要在index.html文件中引入神策分析SDK。您可以将以下代码添加到index.html文件的<head>标签中: ```html <script src="//static.sensorsdata.cn/sdk/1.15.16/sensorsdata.min.js"></script> ``` 3.初始化神策分析SDK 在您的Angular项目中,您需要初始化神策分析SDK。您可以在app.component.ts文件中添加以下代码: ```typescript import { Component } from '@angular/core'; import { Router, NavigationEnd } from '@angular/router'; declare var sensors: any; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private router: Router) { this.router.events.subscribe(event => { if (event instanceof NavigationEnd) { sensors.track('PageView', { $url: event.urlAfterRedirects }); } }); sensors.init({ server_url: 'https://<your_server_url>.sensorsdata.cn/sa?project=<your_project>&token=<your_token>', heatmap: { clickmap: true, scroll_notice_map: true } }); } } ``` 在上面的代码中,您需要将<your_server_url>、<your_project>和<your_token>替换为您的神策分析服务器URL、项目名称和访问令牌。 4.实现埋点 在您的Angular项目中,您可以使用sensors.track()方法来实现埋点。例如,您可以在用户单击按钮时跟踪事件: ```typescript import { Component } from '@angular/core'; declare var sensors: any; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { onClick() { sensors.track('ButtonClicked', { button_name: 'my_button' }); } } ``` 在上面的代码中,当用户单击名为“my_button”的按钮时,将跟踪名为“ButtonClicked”的事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子伟-H5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值