真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

小程序從手動埋點到自動埋點的實現(xiàn)方法

前言

成都創(chuàng)新互聯(lián)專注于呼蘭網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供呼蘭營銷型網(wǎng)站建設,呼蘭網(wǎng)站制作、呼蘭網(wǎng)頁設計、呼蘭網(wǎng)站官網(wǎng)定制、成都微信小程序服務,打造呼蘭網(wǎng)絡公司原創(chuàng)品牌,更為您提供呼蘭網(wǎng)站排名全網(wǎng)營銷落地服務。

小程序由于封閉性較強,要像web應用一樣實現(xiàn)靈活的數(shù)據(jù)收集,會有一定難度。目前開源的埋點SDK,一般采用手動埋點的方式,這種方式有較強的侵入型,為了解決這個問題就有了該文章。

手動埋點

以騰訊移動分析的SDK為例,如果要記錄埋點信息,只要插入一句代碼即可

// 例如,記錄搜索行為
search(keyword) {
  if (keyword) {
    ...業(yè)務代碼
  }
  mta.Event.stat("ico_search", {"query":keyword});
}

示例代碼看起來是比較簡潔的,但是埋點需要收集的數(shù)據(jù)往往不是單一的,復雜的埋點代碼插入業(yè)務代碼,會 影響代碼的閱讀體驗 ,而且 埋點代碼散落在各個地方,不方便管理 。

由于手動埋點必須插入到函數(shù)中,有時候我們?yōu)榱双@取頁面某一元素點擊信息,產(chǎn)生了一種叫無業(yè)務相關埋點,簡單來說就是你的函數(shù)定義,就只有埋點代碼,當這種埋點頻繁出現(xiàn), 代碼會被嚴重污染 。

// wxml
這只是一個展示view
//js 
track() {
 mta.Event.stat("eleClick", {"name":xxxxx});
}

另外,由于PM會頻繁調(diào)整埋點信息,而 埋點是一個繁瑣又無聊的工作 ,基于Don't Repeat Yourself 原則,手動埋帶要不得。

總結以上,手動埋點有下列問題

  • 影響代碼的閱讀體驗
  • 埋點代碼散落在各個地方,不方便管理
  • 代碼會被污染
  • 埋點是一個繁瑣又無聊的工作

自動埋點

實現(xiàn)思路:監(jiān)聽用戶點擊-->讀取埋點配置JOSN,判斷是否需要上報--> 上報數(shù)據(jù)

1、小程序監(jiān)聽用戶點擊行為

web應用監(jiān)聽用戶點擊行為是比較容易,但是小程序沒有提供Dom的事件監(jiān)聽,不過我們可以通過事件冒泡的方式捕獲。

// web監(jiān)聽頁面點擊
document.addEventListener('click',(e) => {console.log(e)})

// 小程序監(jiān)聽頁面點擊,用戶的點擊行為都會執(zhí)行elementTracker方法

 
   
 


2、判斷點擊位置是否落在監(jiān)聽元素中

假設需要監(jiān)聽用戶是否點擊class為buy-now元素,可以通過獲取buy-now元素長寬,定位和點擊位置坐標判斷是否出現(xiàn)重疊,以判斷是否被點擊。

/**
 * 判斷點擊是否落在目標元素
 * @param {Object} clickInfo 用戶點擊坐標
 * @param {Object} boundingClientRect 目標元素信息
 * @param {Object} scrollOffset 頁面位置信息
 * @returns {Boolean}
 */
export const isClickTrackArea = function (clickInfo, boundingClientRect, scrollOffset) {
  if (!boundingClientRect) return false;
  const { x, y } = clickInfo.detail; // 點擊的x y坐標
  const { left, right, top, height } = boundingClientRect;
  const { scrollTop } = scrollOffset;
  if (left < x && x < right && scrollTop + top < y && y < scrollTop + top + height) {
    return true;
  }
  return false;
};

3、通過配置表聲明埋點

為了解決代碼入侵問題,可以將所有埋點信息統(tǒng)一管理,通過配置表的方式,除了方便管理,以后還可以做到動態(tài)配置,在服務端配置完畢下發(fā)到客戶端。

const tracks = {
 path: 'pages/film/detail',
 elementTracks: [
  {
   element: '.buy-now', // 聲明需要監(jiān)聽的元素
   dataKeys: ['film.filmId'], // 聲明需要獲取Data下的哪些數(shù)據(jù)
  },
 ]
};

4、對頁面函數(shù)埋點

有些場景我們除了對頁面元素點擊埋點,還要對頁面函數(shù)進行埋點,例如用戶下拉刷新的時候,可以對原方法進行包裝,插入埋點代碼。

rewritePage() {
  const originPage = Page;
  Page = (page) => {
   Object.keys(page).forEach((methodName) => {
    // 執(zhí)行埋點邏輯
    typeof page[methodName] === 'function' && this.recordPageFn(page, methodName);
   });
   // 執(zhí)行原Page對象
   return originPage(page);
  };
 }

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


文章題目:小程序從手動埋點到自動埋點的實現(xiàn)方法
文章轉(zhuǎn)載:http://weahome.cn/article/jsdces.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部