如何在Vue單頁面中進行業(yè)務數(shù)據(jù)的上報
概述
業(yè)務數(shù)據(jù)的上報主要分為:
- 各個路由的PV上報;
- 用戶的點擊行為上報;
- 用戶操作結(jié)果(分享是否成功)的數(shù)據(jù)上報等;
通用和必須上報的數(shù)據(jù),均在上報的代碼中進行固定,比如設備信息、用戶信息、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中設定的name dataBoss.sendPV(to.name); })
2. 用戶點擊行為的上報
用戶點擊行為的上報,之前是在每個點擊的業(yè)務代碼最后,進行一次點擊上報。不過這樣一個不好的地方是,必須為每個需要上報的點擊元素添加一段業(yè)務代碼,同時,如果多個點擊行為共享某個業(yè)務片段時,需要進行點擊區(qū)分:
methods: { myClick(value, prarams, act) { // ... 業(yè)務邏輯的處理 // 數(shù)據(jù)的上報 wzp.send({ act: act, pageSource: 'MainPage' }) } }
現(xiàn)在,我們利用Vue中的自定義指令來實現(xiàn)點擊行為的上報,上報的處理與業(yè)務代碼進行分割:
// 自定義指令的官方文檔: 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è)務代碼中實現(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è)務數(shù)據(jù)的上報的詳細內(nèi)容,更多關于Vue單頁面中進行業(yè)務數(shù)據(jù)的上報的資料請關注腳本之家其它相關文章!
相關文章
vue.js+ElementUI實現(xiàn)進度條提示密碼強度效果
這篇文章主要介紹了vue.js+ElementUI實現(xiàn)進度條提示密碼強度效果,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01vue項目創(chuàng)建并引入餓了么elementUI組件的步驟
這篇文章主要介紹了vue項目創(chuàng)建并引入餓了么elementUI組件的步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04vue3 攜帶參數(shù)跳轉(zhuǎn)|router傳參方式
這篇文章主要介紹了vue3 攜帶參數(shù)跳轉(zhuǎn)|router傳參方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06詳解vue2.0 不同屏幕適配及px與rem轉(zhuǎn)換問題
這篇文章主要介紹了詳解vue2.0 不同屏幕適配及px與rem轉(zhuǎn)換問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02解讀element ui el-row標簽中的gutter用法
這篇文章主要介紹了解讀element ui el-row標簽中的gutter用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08