最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Vue單頁面中進行業(yè)務(wù)數(shù)據(jù)的上報

 更新時間:2021年05月14日 11:03:48   作者:蚊子博客  
為什么要在標題里加上一個業(yè)務(wù)數(shù)據(jù)的上報呢,因為在咱們前端項目中,可上報的數(shù)據(jù)維度太多,比如還有性能數(shù)據(jù)、頁面錯誤數(shù)據(jù)、console捕獲等。這里我們只講解業(yè)務(wù)數(shù)據(jù)的埋點。

概述

業(yè)務(wù)數(shù)據(jù)的上報主要分為:

  • 各個路由的PV上報;
  • 用戶的點擊行為上報;
  • 用戶操作結(jié)果(分享是否成功)的數(shù)據(jù)上報等;

通用和必須上報的數(shù)據(jù),均在上報的代碼中進行固定,比如設(shè)備信息、用戶信息、cookie等都需要上報的數(shù)據(jù),在上報前處理完成,需要異步獲取且數(shù)據(jù)固定的,做好存儲,防止每次都要重新獲??;其他額外的數(shù)據(jù),通過對外暴露的send方法進行傳遞。

比如獲取信息這塊,客戶端給到的jsapi,有可能只能異步調(diào)用,那么我們就可以這么處理:

function getAppInfo() {
    let appInfo = {};

    return ()=> {
        if (appInfo.deviceId) {
            return Promise.resolve(appInfo);
        } else {
            return new Promise((resolve, reject) => {
                ABB.getAppInfo(info => {
                    if (info.deviceId) {
                        appInfo = info;
                        resolve(appInfo);
                    } else {
                        reject(new Error('get AppInfo error'));
                    }
                })
            })
        }
    }
}

const AppInfo = getAppInfo();
console.log( AppInfo() );

1. 各個路由的PV上報

各個路由的PV上報可以通過vue router的afterEach來實現(xiàn),每次路由刷新時,afterEach方法都會執(zhí)行,那么我們在這里進行PV的上報:

// 每個hash路由的PV上報
router.afterEach((to)=>{
    // to為當前已打開的頁面,to.name為在router/index.ts中設(shè)定的name
    dataBoss.sendPV(to.name);
})

2. 用戶點擊行為的上報

用戶點擊行為的上報,之前是在每個點擊的業(yè)務(wù)代碼最后,進行一次點擊上報。不過這樣一個不好的地方是,必須為每個需要上報的點擊元素添加一段業(yè)務(wù)代碼,同時,如果多個點擊行為共享某個業(yè)務(wù)片段時,需要進行點擊區(qū)分:

methods: {
    myClick(value, prarams, act) {
        // ... 業(yè)務(wù)邏輯的處理

        // 數(shù)據(jù)的上報
        wzp.send({
            act: act,
            pageSource: 'MainPage'
        })
    }
}

現(xiàn)在,我們利用Vue中的自定義指令來實現(xiàn)點擊行為的上報,上報的處理與業(yè)務(wù)代碼進行分割:

// 自定義指令的官方文檔: https://cn.vuejs.org/v2/guide/custom-directive.html
// 自定義boss指令
// bind: 只對該元素綁定一次
// el: 觸發(fā)時的DOM元素
// binding.value: 傳入的值
// 使用 v-boss="{page: 'MainPage', sop: 'donate'}"
Vue.directive('boss', {
    // 
    bind: function (el: HTMLElement, binding: any) {
        el.addEventListener('click', ()=>{
            // 綁定click事件,觸發(fā)后進行數(shù)據(jù)上報
            Vue.prototype.$dataBoss.send(binding.value)
        })
    }
})

自定義v-boss指令后,我們就可以在元素上使用這個指令后:

<!-- 為用戶頭像添加點擊數(shù)據(jù)上報 -->
<div class="avatar" v-boss="{pageName: 'MainPage', sop: 'sop_own_click'}" @click="linkTo">
    <img :src="user.avatar" :alt="user.nickname">
</div>

3. 用戶操作結(jié)果的數(shù)據(jù)上報

這里的數(shù)據(jù)上報是用戶點擊行為之后的結(jié)果上報,比如用戶點擊了分享按鈕,那么最終他是真的分享成功了,還是中途又取消了。這種數(shù)據(jù)的上報,可以分析出用戶從意圖操作到最終實現(xiàn)的一個流失情況。

操作結(jié)果的數(shù)據(jù)上報,依賴于客戶端或者接口給反饋的結(jié)果,這就需要在業(yè)務(wù)代碼中實現(xiàn)了,定義一個全局變量$dataBoss,通過這個來上報數(shù)據(jù):

比如分享是否成功的監(jiān)控:

// 發(fā)起分享
handleShare() {
    share.show();
    share.on('shareResult', res => {
        this.$dataBoss.send({
            sop: 'share_success'
        });
    })
}

根據(jù)接口中的數(shù)據(jù)進行上報:

handleUser() {
    jsonp(url).then(result => {
        this.$dataBoss.send({
            kv: {
                money: 20
            }
        });
    })
}

總結(jié)

前端數(shù)據(jù)上報的維度很多,都是為了方便我們更加的了解用戶、了解產(chǎn)品,方便以后的功能迭代。

以上就是如何在Vue單頁面中進行業(yè)務(wù)數(shù)據(jù)的上報的詳細內(nèi)容,更多關(guān)于Vue單頁面中進行業(yè)務(wù)數(shù)據(jù)的上報的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue 短信驗證碼組件開發(fā)詳解

    Vue 短信驗證碼組件開發(fā)詳解

    Vue.js(讀音 /vju&#720;/, 類似于 view)是一個構(gòu)建數(shù)據(jù)驅(qū)動的 web 界面的庫。這篇文章主要介紹了Vue 短信驗證碼組件開發(fā)詳解,需要的朋友可以參考下
    2017-02-02
  • vue2中前端實現(xiàn)語音播報的詳細過程

    vue2中前端實現(xiàn)語音播報的詳細過程

    vue中語音播報,目前本人寫的過程中,遇到了兩種情況,第一種是后端直接返回一個mp3的播放url,第二種就是播報的內(nèi)容需要前端自己拼接的,關(guān)于兩種方法,我都說一下如何實現(xiàn),感興趣的朋友一起看看吧
    2024-07-07
  • axios在Vue3中的使用實例代碼

    axios在Vue3中的使用實例代碼

    Axios是一個基于Promise的HTTP客戶端,用于瀏覽器和Node.js,這篇文章主要介紹了axios在Vue3中的使用,需要的朋友可以參考下
    2023-07-07
  • rollup3.x+vue2打包組件的實現(xiàn)

    rollup3.x+vue2打包組件的實現(xiàn)

    本文主要介紹了rollup3.x+vue2打包組件的實現(xiàn),詳細的介紹了打包會存在的問題,包版本的問題,babel 轉(zhuǎn)換jsx等問題,具有一定的參考價值,感興趣的可以了解一下
    2023-03-03
  • Vue的狀態(tài)管理vuex使用方法詳解

    Vue的狀態(tài)管理vuex使用方法詳解

    由于Vue多個狀態(tài)分散的跨越在許多組件和交互間各個角落,大型應(yīng)用復(fù)雜度也經(jīng)常逐漸增長。為了解決這個問題,Vue提供了vuex。本文將詳細介紹Vue狀態(tài)管理vuex,需要的朋友可以參考下
    2020-02-02
  • vue-router next(false) 禁止訪問某個頁面時,不保留歷史訪問記錄問題

    vue-router next(false) 禁止訪問某個頁面時,不保留歷史訪問記錄問題

    這篇文章主要介紹了vue-router next(false) 禁止訪問某個頁面時,不保留歷史訪問記錄問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 完美解決vue中報錯?“TypeError:?Cannot?read?properties?of?null?(reading'forEach')“

    完美解決vue中報錯?“TypeError:?Cannot?read?properties?of?null?

    這篇文章主要介紹了完美解決vue中報錯?“TypeError:?Cannot?read?properties?of?null?(reading?‘forEach‘)“,本文給大家分享詳細解決方案,需要的朋友可以參考下
    2023-02-02
  • vue前端如何將任意文件轉(zhuǎn)為base64傳給后端

    vue前端如何將任意文件轉(zhuǎn)為base64傳給后端

    這篇文章主要介紹了vue前端如何將任意文件轉(zhuǎn)為base64傳給后端問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue中的計算屬性介紹

    Vue中的計算屬性介紹

    這篇文章主要介紹了Vue中的計算屬性,模板內(nèi)的表達式,用于簡單運算,但是模板中放入太多的邏輯會讓模板過重且難以維護,更多具體內(nèi)容一起進入下面文章學(xué)習(xí)吧,需要的朋友也可以參考一下
    2021-12-12
  • 詳解vue數(shù)據(jù)響應(yīng)式原理之數(shù)組

    詳解vue數(shù)據(jù)響應(yīng)式原理之數(shù)組

    這篇文章主要為大家詳細介紹了vue數(shù)據(jù)響應(yīng)式原理之數(shù)組,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論

延寿县| 东乡| 石阡县| 昌江| 志丹县| 大化| 广安市| 石阡县| 毕节市| 婺源县| 正阳县| 柳林县| 华蓥市| 湖口县| 玉门市| 福泉市| 丰顺县| 陈巴尔虎旗| 永善县| 电白县| 栾城县| 于都县| 拉孜县| 湖口县| 电白县| 察隅县| 和林格尔县| 古浪县| 江陵县| 紫金县| 海晏县| 宽甸| 连云港市| 沙坪坝区| 高清| 荣成市| 连州市| 祁阳县| 北海市| 马公市| 托里县|