网站首页 > 教程文章 正文
日常项目开发中,涉及到一些例如支付数据,点击捕获错误等信息,埋点日志的上报是必不可少的,项目中埋点的简单封装,作以参考。
埋点安装
标题也有说,我们用的是 神策埋点平台 提供的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,关于存储空间pinia细讲,请跳转
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');
在组件内使用:
// 引入
import sensorsTrack from '@/utils/sendSensors.js'
// 需要上报的事件 || 函数内添加
sensorsTrack('事件名', 上报参数, callback()) || sensorsTrack('事件名', 上报参数)
原文链接:https://juejin.cn/post/7287562282670227515
- 上一篇: 面试遇到 性能优化 必答的 9 个点,加分!
- 下一篇: 什么是堆栈?堆栈指针的SP的作用是什么?
猜你喜欢
- 2024-12-29 面试遇到 性能优化 必答的 9 个点,加分!
- 2024-12-29 Vue NextTick揭秘:你不知道的秘密!
- 2024-12-29 史上最全 vue-router 讲解 !!! vue-router怎么用
- 2024-12-29 前端项目重构的一些思考和复盘 前端项目构建工具有什么
- 2024-12-29 vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
- 2024-12-29 VueUse中的这5个函数,也太好用了吧
- 2024-12-29 vue-cms开源企业级后台管理系统 开源vue项目
- 2024-12-29 Vue和React的一些对比:哪个更适合你?
- 2024-12-29 第14天|14天搞定Vue3.0,电子地图,一定要用Vue?
- 2024-12-29 利用vue.js进行自定义事件,一学就会
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)