国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue項目前端埋點的實現

2024-05-06 15:41:54
字體:
來源:轉載
供稿:網友

埋點方案的確定。業界的埋點方案主要分為以下三類:

代碼埋點:在需要埋點的節點調用接口,攜帶數據上傳。如百度統計等; 可視化埋點:使用可視化工具進行配置化的埋點,即所謂的「無痕埋點」,前端在頁面加載時,可以讀取配置數據,自動調用接口進行埋點。如開源的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文件中)就解耦了。調用也很方便。

看起來很美,但這樣就能解決問題了嗎?顯然是不夠的。還需要解決以下問題:

遍歷DOM樹的時機問題,一個簡單的例子,一個表格的行數據是通過異步加載,而表格行中的操作按鈕需要埋點,那么在DOM ready的時候去遍歷,顯然是無法找到的 綁定埋點事件次數的問題,怎樣保證埋點事件不會被重復綁定到元素上,一次操作發了N個埋點請求? 如何處理特有的埋點行為,如頁面展現埋點,區域展現埋點? 如何在解綁時,銷毀已綁定的事件?

1.自定義指令實現埋點數據統計

在項目中通常需要做數據埋點,這個時候,使用自定義指令將會變非常簡單

在項目入口文件 main.js 中配置我們的自定義指令

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 孝感市| 文昌市| 台南县| 滕州市| 怀远县| 茂名市| 邵阳市| 青神县| 青铜峡市| 平昌县| 托克逊县| 江孜县| 乌拉特前旗| 江安县| 蓝山县| 灯塔市| 小金县| 梁河县| 宁津县| 巫溪县| 南汇区| 雷州市| 天台县| 广水市| 微博| 麻江县| 开远市| 巴楚县| 安西县| 白水县| 福贡县| 南靖县| 宁远县| 绥滨县| 耿马| 祁阳县| 信阳市| 凯里市| 赤水市| 河源市| 万宁市|