埋点上报默认使用 sendBeacon 如果浏览器不支持则使用 ajax
npm install hex-event-trackjs
import { hexSend, toPage, leavePage, extendBaseInfo, hexDataTrack } from 'hex-event-track'
`
插件内部默认携带信息
> 此处需要注意的是 appVersion: window.hexAppInfo.appVersion, terminalCode: window.hexAppInfo.terminalCode, 需要在项目中给window对象挂载 hexAppInfo
`js
window.hexAppInfo = {
terminalCode: 1,
appVersion: '1.0.0',
appName: 'STUREPORT'
}
`
`JS
constructor() {
const deviceinfo = getBrowserVersion();
this._url = '/routeapi/buryingpoint/DataCollect/Common?ssotoken=';
this.request = ajax();
this._baseInfo = {
deviceDetail: deviceinfo[0],
deviceVersion: deviceinfo[1],
os: navigator.userAgent.indexOf('Mac OS') >= 0 ? 3 : 1,
systemVersion: navigator.userAgent.indexOf('Mac OS') >= 0 ? 3 : 1,
appVersion: window.hexAppInfo.appVersion,
terminalCode: window.hexAppInfo.terminalCode,
};
this.pageStack = [];
}
`
扩展基础信息, 比如扩展用户id, 此后的所有上报都会带上此信息
`js
extendBaseInfo({
userId: 'xxxx'
})
`
设置token
`js
import { hexDataTrack } from 'hex-event-track'
hexDataTrack.token = 'xxxx'
`
方法
$3
`js
hexSend({
eventCode: 'viewStuReportAllMon',
eventName: '浏览学生全学科月报',
})
`
$3
> 此处的path是为了区分不同页面的停留时间
`js
router.beforeEach((to, from, next) => {
toPage({
path: to.path,
eventCode: 'viewStuReportAllMon',
eventName: '浏览学生全学科月报',
eventType: 3,
optionalParam: [{
name: 'viewStuReportAllMon',
}]
})
next()
})
router.afterEach((to, from) => {
// 过滤首页首次进入
if (from.fullPath === '/') return
leavePage()
})
`
$3
指令文件
`js
import { hexSend } from 'hex-event-track'
export default {
mounted(el, binding) {
el.onclick = () => {
const trackData = binding.value;
hexSend(trackData)
}
},
}
`
main.js
`js
import VEvent from '@/utils/eventTrack/v-track.js'
...
app.directive('track', VEvent);
`
vue使用
`html
``