埋點方案的確定。業界的埋點方案主要分為以下三類:
代碼埋點:在需要埋點的節點調用接口,攜帶數據上傳。如百度統計等; 可視化埋點:使用可視化工具進行配置化的埋點,即所謂的「無痕埋點」,前端在頁面加載時,可以讀取配置數據,自動調用接口進行埋點。如開源的Mixpanel; 無埋點:前端自動采集全部事件并上報埋點數據。如國內的神策數據等;在當時排期緊湊,人力緊缺的情況下,顯然不允許我們去開發可視化埋點方案和無埋點方案,所以只能采取代碼埋點方案。
命令式埋點
命令式埋點,顧名思義,開發者需要手動在需要埋點的節點處進行埋點。如點擊按鈕或鏈接后的回調函數、頁面ready時進行請求的發送。大家肯定都很熟悉這樣的代碼:
// 頁面加載時發送埋點請求$(document).ready(function(){ // ... 這里存在一些業務邏輯 sendRequest(params);});// 按鈕點擊時發送埋點請求$('button').click(function(){ // ... 這里存在一些業務邏輯 sendRequest(params);});可以很容易發現,這樣的做法很有可能會將埋點代碼侵入業務代碼,這使整體業務代碼變得繁瑣,容易出錯,且后續代碼會愈加膨脹,難以維護。所以,我們需要讓埋點的代碼與具體的業務邏輯解耦,即 聲明式埋點 ,從而提高埋點的效率和代碼的可維護性。
聲明式埋點
理論上,聲明式埋點只需要關注兩個問題:
需要埋點的DOM節點; 所需攜帶的數據因此,可以很快想出一個聲明式埋點的方法:
// key表示埋點的唯一標識;act表示埋點方式<button data-stat="{key:'111', act: 'click'}">埋點</button>那么可以去遍歷DOM樹,找到 [data-stat] 的節點,給這個button綁上click事件,把這些參數在回調函數中通過請求發出去。
在DOM節點(html)上聲明埋點,與業務邏輯(通常在Javascript文件中)就解耦了。調用也很方便。
看起來很美,但這樣就能解決問題了嗎?顯然是不夠的。還需要解決以下問題:
1.自定義指令實現埋點數據統計
在項目中通常需要做數據埋點,這個時候,使用自定義指令將會變非常簡單
在項目入口文件 main.js 中配置我們的自定義指令
新聞熱點
疑難解答
圖片精選