在"大數據"背景下, Analytics 這類分析系統在項目中扮演着很重要的角色.
筆者此次主要 以 vue 配上 Google Analytics 作案例演示如何 在項目中作分析記錄.javascript
筆者在項目中添加了 Google Analytics 分析大體快滿一年了.其實一直並無太關注這方面.可是年底項目要計劃2019年"重構計劃".專門花了一些時間看了一下分析數據. 不愧是互聯網大佬. 分析數據欄目衆多.數據也至關豐富.至關一部分 "重構清單"都參考了這些數據. 筆者這裏也是極力推薦你們在項目中使用分析系統.稍具規模的項目在沉澱一段時間以後都能提供至關有價值的參考數據來作預測依據. 筆者知道的有 Google Analytics 和 GrowingIO . Facebook Analytics這些. 就分析系統的挑選 你們能夠根據項目的實際須要.
vue
分析系統的'跟蹤器'會自動把用戶的一些操做發送到操做系統中.可是通常的PV/UV/UA 這些比較基礎的數據並不太能知足產品的野心. 分析系統自己也有提供不少 API 可以讓咱們充分利用起來.
這裏主要介紹筆者在項目中如何用到的幾個 API : 'fields' , 'event', 'timing','exception', 'social', 'ecommerce'java
Vue.use(VueAnalytics, {
id: 'UA-xxx',
checkDuplicatedScript: true,
router,
autoTracking: {
exception: true,
shouldRouterUpdate (to, from) {
// next route path is not the same as the previous
return to.path !== from.path
}
},
// 字段跟蹤
fields: {
version: 'v1.2.4'
},
//...
})
複製代碼
'version' 字段用於給用戶觀察 不一樣 版本所帶來的數據差別vuex
/** * @argument { category<String>, action<String>, label<String>, value<Number>} * @description 分類, 動做, 標籤, 價值(這裏不作事件的價值衡量) */
targetEvents (){
this.$ga.event(...arguments)
}
// vuex
export default {
namespaced: true,
state:{
// ...
api: {
submit: 'api/v1/submit'
}
},
actions: {
async submit({state, rootState}, params){
const t0 = performance.now();
const {data, code ,info} = await http.post(state.api.submit, params);
const t1 = performance.now();
time(state.api.submit,
`${navigator.connection.type} |${navigator.connection.effectiveType} |${navigator.connection.downlink} |${navigator.connection.rtt}`,
t1 - t0,
rootState.user.cid);
event(state.api.submit, info, rootState.user.cid);
return data;
},
}
}
// http.js
function checkStatus(response) {
if (response.status >= 200 && response.status < 300) {
return response;
}
const error = new Error(response.statusText);
exception(error);
error.response = response;
throw error;
}
export default {
get: async (url, params, option) =>
await fetch(`${url}?${params ? new URLSearchParams(params).toSting() : ''}`, {
...options,
...option
}).then(res => res.json()).catch(checkStatus),
post: async (url, body, option) =>
await fetch(url, {
...options,
...option,
method: 'POST', body
}).then(res => res.json()).catch(checkStatus)
}
複製代碼
Event 結合 Timing 可讓測試或者產品可以觀察到某個 cid 用戶每日的特定動做操做情況json
this.$ga.social('Facebook','Share',`https://www.test.com/?cid=${user.cid}`)
複製代碼
social主要記錄用戶在社交平臺上的分享事件.api
電商專用API.主要記錄 添加商品/交易/收藏/評價等動做記錄.並無機會用上.不過用法大致一致.服務器
計時器報表網絡
類型 | 標籤 | 變量 | 計時 | 採樣數 |
---|---|---|---|---|
api/v1/submit | cidA | wifi:3g:200 | 0.3 | 259 |
api/v2/submit | cidB | wifi:4g:225 | 0.2 | 124 |
api/v1/xxxx | cidC | wifi:4g:225 | 0.6 | 122 |
api/v1/xxxxx | cidD | wifi:4g:225 | 0.4 | 99 |
事件報表async
類型 | 標籤 | 操做 | 總數 | 惟一身份數 |
---|---|---|---|---|
api/v1/submit | cidA | 用戶已註冊 | 69(6.24%) | 54(x%) |
api/v2/submit | cidB | 缺乏必要參數 | 57(5.21%) | 32(x%) |