0.0.1-beta • Published 2 years ago

web-data-tracker v0.0.1-beta

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

vue-trackjs

A lightweight tracking library of vue.

Installation

// npm
npm i --save vue-trackjs

// yarn
yarn add vue-trackjs

//  main引入
import TrackDirective from 'vue-trackjs'
import { options } from './track.config.js'

// vue 3
createApp(App).use(TrackDirective, options)

// vue 2
Vue.use(TrackDirective, options)

配置文件

// 新建track.config.js文件
import { setTrackBaseInfo, throttle } from 'vue-trackjs'

// 你的自定义通用埋点信息, vue-trackjs集成的通用信息下面会有介绍
const trackBaseInfo = {
    ip: '127.23.112.3',
    version: '1.0.0',
    deviceId: 'vue-track',
    language: 'us',
    network: '3G',
}

// 存储到localstorage
setTrackBaseInfo(trackBaseInfo)

// 获取埋点配置信息函数,一般埋点都是支持系统配置,从接口取埋点配置,下面只是简单示范
function getTrackConfig() {
    // 该函数必须return如下结构,eventId和action字段固定不可更改,其他随意
    return {
        // 该key对应后续自定义指令里面的id
        "moduleName_xxx_show": {
            "eventId": "moduleName_xxx_show",
            "resourceModule": "",
            "action": "show"
        },
        "moduleName_xxx_click": {
            "eventId": "moduleName_xxx_click",
            "resourceModule": "12323",
            "action": "click"
        }
    }
}

// 获取埋点信息上传id函数,埋点批次上传前获取上传权限,根据业务需要,为可选项
function getUploadId() {
    // 只接收下面两个字段
    return { liftTime, uploadKey }
}

// 轮询上传埋点信息回调函数, 会有3个入参  埋点信息数组  通用信息  getUploadId函数返回的uploadKey(可选)
function uploadTracks(trackList, baseInfo, uploadKey) {
    return Promise<any>
}

export const options = {
    appId: 'projectName',
    getTrackConfig,
    getUploadId,
    uploadTracks
}

基本用法

**vue-trackjs 自带的埋点类型有4种:**

// click 点击事件
<div v-track="{ id: 'moduleName_xxx_click', eventResource: '{xxid: 12}' }">...</div>

// scoll_up 用户浏览滚动深度
<div v-track="{ id: 'moduleName_xxx_scoll_up' }">...</div>

// stay 停留时长
<div v-track="{ id: 'moduleName_xxx_stay' }">...</div>

// show 页面加载时间
<div v-track="{ id: 'moduleName_xxx_show'  }" :data-track="getLoadingTime">...</div>

computed: {
    getLoadingTime() {
        // 注意自定义data属性里面只接收字符串
        return JSON.stringify({ loadingTime: xxx })
    }
}

注:因为vue自定义bind.value不是响应式的,但你的eventResource是响应式数据时,需要像上面的show一样新增一个data-track,用来替换eventResource

自定义埋点事件

// 需要新增customActionFn配置
const options = {
    // ...
    customActionFn: {
        // 入参会返回3个参数, callback函数必须调用传入trackInfo才会成功
        myCustom: (trackInfo, callback, el) => {
            const fn = () => {
                trackInfo.haha = "guapi"
                callback(trackInfo)
            }
            el.addEventListener('mouseenter', throttle(fn, 300))
        }
    }
}

手动埋点

import { manualBurying } from 'vue-trackjs'

function clickHandler() {
    // manualBurying接收两个入参  埋点信息  另一个localstorage的key(可选,默认appId)
    const trackInfo = { //... }
    manualBurying(trackInfo)
}

Browser

<script type="text/javascript" src="track.min.js"></script>

除注册自定义指令的方式需要修改外,其他用法基本同上