程式碼埋點
命令式埋點
- 常規方案
- 手動在需要埋點的節點處進行埋點
- 工作量較大,入侵業務程式碼後續程式碼會愈加膨脹,難以維護。
宣告式埋點
- 例:統計某 dom 點選事件
- 首先封裝一個 vue 指令(directive);
// 註冊一個全域性自定義指令 `v-tracking` Vue.directive("tracking", { // 只呼叫一次,指令第一次繫結到元素時呼叫。 bind: (el, binding) => { // 給元素繫結事件 el.addEventListener( "click", _ => { // 預設引數設定 let def = { url:'/url', } let data = Object.assign(def,binding.value); //binding.value為傳入的物件字面量,將其轉為字串再通過RSA加密來壓縮埋點內容 console.log(RSA.encrypt(JSON.stringify(data))); // 傳送埋點資料 }, false ); } }); 複製程式碼
- html
<button v-tracking="{ tag: '1', remake:'1' }">按鈕1</button> <button v-tracking="{ tag: '2', remake:'2' }">按鈕2</button> 複製程式碼
- 目前埋點程式碼與業務程式碼混合再一起的,宣告式埋點可以再一定程度上解耦業務程式碼
- 一些複雜場景依然需要命令式埋點
- 首先封裝一個 vue 指令(directive);
無埋點(全埋點)
- 由於採集的是全量資料,所以產品迭代過程中是不需要關注埋點邏輯的,也不會出現漏埋、誤埋等現象
- 無埋點採集全量資料,給資料傳輸和伺服器增加壓力
- 無法靈活的定製各個事件所需要上傳的資料