国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

這篇具有很好參考價值的文章主要介紹了基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

matomo是一款Google-analytics數(shù)據(jù)埋點采集上報的平替方案,可保護您的數(shù)據(jù)和客戶的隱私;正如它官網(wǎng)的slogan: Google Analytics alternative that protects your data and your customers' privacy; 該項目源碼開源免費,支持私有化部署,保證數(shù)據(jù)安全、可靠;支持多種方式集成,不管你的應(yīng)用是傳統(tǒng)的html多頁面應(yīng)用還是現(xiàn)代的SPA單頁面應(yīng)用,不管你的應(yīng)用是CSR渲染還是SSR渲染,均可支持;

SDK統(tǒng)計代碼

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

<!-- Matomo -->
<!-- 聯(lián)系管理員新建項目后自動生成,放入到項目根目錄index.html header標(biāo)簽下,并配置相應(yīng)的追蹤域名地址,即刻生效 -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']); // 記錄頁面視圖
  _paq.push(['enableLinkTracking']); // 在所有適用的鏈接元素上安裝鏈接跟蹤
  (function () {
    var u = "https://test-matobo.jnt-express.com.cn/"; // matomo私有服務(wù)器地址
    _paq.push(['setTrackerUrl', u + 'matomo.php']); // 指定 Matomo 服務(wù)器 URL
    _paq.push(['setSiteId', '9']); // 設(shè)置追蹤的站點唯一編碼(指定網(wǎng)站 ID) 該id將作為唯一標(biāo)識來區(qū)分matomo正在采集數(shù)據(jù)的應(yīng)用
    var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
    g.async=true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); // async 屬性指定該腳本SDK將會在加載完畢后執(zhí)行
  })();
</script>
<!-- End Matomo Code -->
  • 常用Api:

  • setCustomUrl(string):

    Override the page's reported URL,覆蓋頁面報告的 URL;給matomo上報業(yè)務(wù)系統(tǒng)的地址路徑、路由信息等

  • trackPageView([customTitle]):

    Log a page view.?記錄頁面視圖信息并上報頁面標(biāo)題

  • setUserId(userId):

    Sets a?User ID?to this user (such as an email address or a username).?設(shè)置該用戶的用戶 ID(例如電子郵件地址或用戶名)

  • resetUserId:

    Clears (un-set) the User ID.?清除(取消設(shè)置)用戶 ID

  • trackEvent(category,action,[name],[value]):

    Log an event with an event category (Videos, Music, Games...), an event action (Play, Pause, Duration, Add Playlist, Downloaded, Clicked...), and an optional event name and optional numeric value??記錄事件,其中包含事件類別(視頻、音樂、游戲...)、事件操作(播放、暫停、持續(xù)時間、添加播放列表、下載、單擊...)以及可選事件名稱和可選數(shù)值;此api將作為行為埋點,例記錄按鈕點擊次數(shù)上報等場景使用

接入方式

?

matomo支持多種方式接入,不管你的應(yīng)用是傳統(tǒng)的html多頁面應(yīng)用,還是現(xiàn)代的vue、react等單頁面應(yīng)用;

?

傳統(tǒng)的html多頁面應(yīng)用接入:

  • 使用

  • 引入SDK

<!-- 將統(tǒng)計代碼放入到項目根目錄下的index.html的header標(biāo)簽下,注意,該script是新建項目時自動生成的追蹤代碼-->
<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://test-matobo.jnt-express.com.cn/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '10']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

  引入SDK即可自動采集部分?jǐn)?shù)據(jù),如有特殊需求需要記錄頁面信息及標(biāo)題,在對應(yīng)的地方調(diào)用window._paq.push方法去傳遞參數(shù)即可;api跟其他方式保持一致;

  • 現(xiàn)代的單頁面應(yīng)用接入:

  • Hooks 封裝

/** src/plugins/matomo.ts */ 
export default function useMatomo() {
  /** 頁面地址信息上報 */
  const setCustomUrl = (url: string) => {
    ;(window as any)._paq.push(['setCustomUrl', `${url}`])
  }

  /** 頁面標(biāo)題信息上報 */
  const trackPageView = (title: string | any) => {
    ;(window as any)._paq.push(['trackPageView', `${title}`])
  }

  /** 用戶信息userId上報 */
  const setUserId = (userId: string | number | boolean) => {
    ;(window as any)._paq.push(['setUserId', `${userId}`])
    ;(window as any)._paq.push(['trackPageView'])
  }

  /** 重置userId,這里多次調(diào)用trackAllContentImpressions是為了在退出登錄的時候重置調(diào)userId,并在下一次登錄時重新生成一條最新的記錄 */
  const resetUserId = () => {
    // UserID passed to Matomo (see https://developer.matomo.org/guides/tracking-javascript-guide#user-id)
    ;(window as any)._paq.push(['resetUserId'])
    ;(window as any)._paq.push(['trackAllContentImpressions', 'new_visit=1'])
    ;(window as any)._paq.push(['trackPageView'])
    ;(window as any)._paq.push(['trackAllContentImpressions'])
  }

  /**
   * 行為埋點
   * $matomo.trackEvent('行為類別', '事件', 'name', 'value')
   * behaviorCategory  行為類別
   * event 事件
   * name 事件名稱
   * value 事件值
   */
  const trackEvent = (behaviorCategory: string, event: string, name: string, value?: string | number) => {
    ;(window as any)._paq.push(['trackEvent', `${behaviorCategory}`, `${event}`, `${name}`])
  }

  return {
    setCustomUrl,
    trackPageView,
    setUserId,
    resetUserId,
    trackEvent
  }
}
<!-- App.vue --> 
<template>
  <ConfigProvider :locale="zhCN">
    <router-view />
  </ConfigProvider>
</template>
<script lang="ts" setup>
  import { onMounted, watch } from 'vue'
  import { ConfigProvider } from 'ant-design-vue'
  import { useRouter } from 'vue-router'
  import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
  import useMatomo from '@/plugins/matomo'
  import { useAuthStore } from '@/store/auth'

  const router = useRouter()
  const authStore = useAuthStore()
  const matomo = useMatomo()
  /** 
    在App.vue中記錄每個路由切換的路徑及頁面標(biāo)題信息;
    sertUserId一般在登錄完成之后調(diào)用,這里在App.vue中調(diào)用是為了解決token存在,spa應(yīng)用直接進目標(biāo)頁面而跳過登錄頁無法觸發(fā)setUserId上報的問題
  */
  watch(
    () => router.currentRoute.value,
    (newValue: any) => {
    // 這里延遲是因為matomo sdk加載是異步非阻塞加載,所以為了能正確的獲取到window上matomo的實例,我們這里會有略微延遲
      setTimeout(() => {
        /**
         * 記錄跳轉(zhuǎn)頁面及頁面標(biāo)題  userCode及nickName均為業(yè)務(wù)系統(tǒng)數(shù)據(jù),此處做拼接傳入
         **/
        const name =
          authStore.userInfo?.userCode !== undefined
            ? `${authStore.userInfo?.userCode} | ${authStore.userInfo?.nickName}`
            : ''
        matomo.setUserId(name)
        matomo.setCustomUrl(window.location.href)
        matomo.trackPageView(router.currentRoute.value.meta.title)
      }, 500)
    }
  )
<!--src/login/index.vue -->
<script lang="ts" setup>
  import { reactive, ref, onMounted } from 'vue'
  import useMatomo from '@/plugins/matomo'
  const matomo = useMatomo()

  const jumpPage = (data: any) => {
    /** 登錄成功后在跳轉(zhuǎn)之前將業(yè)務(wù)數(shù)據(jù)userCode和nickName上報 */
    const { userCode, nickName, menuTree } = data
    const name = `${userCode} | ${nickName}` || ''
    matomo.setUserId(name)
  }
</script>
<!--具體的頁面具體的方法中去觸發(fā)trackEvent-->
<script lang="ts" setup>
  import { reactive, ref, onMounted } from 'vue'
  import useMatomo from '@/plugins/matomo'
  const matomo = useMatomo()

  const exportBtn = () => {
    /** 例如需要記錄導(dǎo)出按鈕的點擊次數(shù),在導(dǎo)出按鈕中trackEvent即可 */    
    matomo.trackEvent('品牌監(jiān)控報表', '導(dǎo)出', 'export')
</script>

vue-matomo npm包方式引入:

  • vue2

/** 官方提供了vue-matomo這個庫,僅適用于vue2,vue3方式接入會有問題 */
npm install --save vue-matomo
/** main.js */    
import Vue from 'vue'
import VueMatomo from 'vue-matomo'

Vue.use(VueMatomo, {
  // 請求對應(yīng)服務(wù)域名,如果是私有化部署,可以填寫自己內(nèi)網(wǎng)的私有域名,如果是公網(wǎng)部署填寫https://matomo.example.com即可
  host: 'https://matomo.example.com',
  /** 新建項目的script文件中會存在siteId這個變量,這個是跟項目綁定的唯一標(biāo)識,通過該變量索引查找到對應(yīng)項目 */
  siteId: 5,
// 最終的追蹤js文件名  默認(rèn) 'piwik'
  trackerFileName: 'matomo',
  siteId: 9,
  router: router,
  // 支持外部鏈接跟蹤
  enableLinkTracking: true,
  // 是否需要在發(fā)送追蹤信息之前請求許可 默認(rèn)false
  requireConsent: false,
  // 是否追蹤初始頁面 默認(rèn)true
  trackInitialView: true,
  debug: false
});

// 掛載到vue的實例中之后,我們可以使用this.$matomo or window._paq.push or window.Piwik.getTracker 等三種方式來訪問均可,此處使用this來訪問

?其實就是在業(yè)務(wù)代碼中做侵入式埋點了,在對應(yīng)的業(yè)務(wù)邏輯中使用??this.$matomo?&&?this.$matomo.trackPageView()?或?window._paq.push(['trackPageView'])?等api來進行注入埋點采集數(shù)據(jù)并上報,兩者功能效果相同,區(qū)別僅僅只是調(diào)用方式不同,掛載到實例中直接以funtion函數(shù)的方式調(diào)用傳參,window全局變量調(diào)用通過?push方法來調(diào)用,push方法接收一個數(shù)組,數(shù)組第一項為key,后續(xù)剩余參數(shù)為name;

  • vue3

?  vue3由于使用Composition API,且生命周期機制跟vue2不同,同時matomo又是異步加載資源,所以在main.ts文件中即使掛載了對應(yīng)的實例,通過getCurrentInstance()?.appContext.config.globalProperties.$matomo 來訪問matomo對應(yīng)實例,無法保證能準(zhǔn)確的獲取,即使你通過nextTick;因為加載matomo資源不是響應(yīng)式的,若在頁面渲染完成時,matomo資源文件未加載完成,此時獲取到的matomo實例仍然為undefined;至于matomo的實例只在頁面渲染的那一刻就決定你單次加載是否包含matomo實例

?

參考github issues:

? ?github vue-matomo issue

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

解決方案:

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

?

  通過window._pag.push 來訪問全局變量,因為即使你獲取到的this.$matomo實例是undefined,window._paq.push也可以保證它是可用的;

  • react

? ?   社區(qū)沒有提供react-matomo之類的npm包/工具來給開發(fā)者使用,可以參考Hooks方案,將使用到的Api封裝成Hooks,通過window._paq.push的方式在需要的地方來調(diào)用;

   由于是私有化部署,關(guān)于公司logo及業(yè)務(wù)數(shù)據(jù)等相關(guān)較敏感的數(shù)據(jù)均已打碼,只展示具體收集指標(biāo)和效果;

   數(shù)據(jù)采集上報最終效果圖:

?

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報+

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

?

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

?

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

?

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報

?

基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報文章來源地址http://www.zghlxwxcb.cn/news/detail-710697.html

到了這里,關(guān)于基于matomo實現(xiàn)業(yè)務(wù)數(shù)據(jù)埋點采集上報的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 線上問診:業(yè)務(wù)數(shù)據(jù)采集

    線上問診:業(yè)務(wù)數(shù)據(jù)采集

    線上問診:業(yè)務(wù)數(shù)據(jù)采集 暑假躺了兩個月,也沒咋寫博客,準(zhǔn)備在開學(xué)前再做個項目找找感覺,由于之前做過廣告數(shù)倉的案例,這次的博客會相對簡略一些,數(shù)倉包括離線和實時兩個部分,離線用來加深記憶,實時用來學(xué)習(xí)新技術(shù)。 由于很多內(nèi)容之前博客都完成過。這里就

    2024年02月11日
    瀏覽(27)
  • 基于埋點日志數(shù)據(jù)的網(wǎng)絡(luò)流量統(tǒng)計 - PV、UV

    基于埋點日志數(shù)據(jù)的網(wǎng)絡(luò)流量統(tǒng)計 - PV、UV

    水善利萬物而不爭,處眾人之所惡,故幾于道?? 一、 網(wǎng)站總流量數(shù)統(tǒng)計 - PV ? 1. 需求分析 ? 2. 代碼實現(xiàn) ?? 方式一 ?? 方式二 ?? 方式三:使用process算子實現(xiàn) ?? 方式四:使用process算子實現(xiàn) 二、網(wǎng)站獨立訪客數(shù)統(tǒng)計 - UV ? 1. 需求分析 ? 2. 代碼實現(xiàn) ??PV全稱

    2024年02月14日
    瀏覽(26)
  • 1、電商數(shù)倉(用戶行為采集平臺)數(shù)據(jù)倉庫概念、用戶行為日志、業(yè)務(wù)數(shù)據(jù)、模擬數(shù)據(jù)、用戶行為數(shù)據(jù)采集模塊、日志采集Flume

    1、電商數(shù)倉(用戶行為采集平臺)數(shù)據(jù)倉庫概念、用戶行為日志、業(yè)務(wù)數(shù)據(jù)、模擬數(shù)據(jù)、用戶行為數(shù)據(jù)采集模塊、日志采集Flume

    數(shù)據(jù)倉庫( Data Warehouse ),是為企業(yè)制定決策,提供數(shù)據(jù)支持的??梢詭椭髽I(yè),改進業(yè)務(wù)流程、提高產(chǎn)品質(zhì)量等。 數(shù)據(jù)倉庫的輸入數(shù)據(jù)通常包括:業(yè)務(wù)數(shù)據(jù)、用戶行為數(shù)據(jù)和爬蟲數(shù)據(jù)等。 業(yè)務(wù)數(shù)據(jù):就是各行業(yè)在處理事務(wù)過程中產(chǎn)生的數(shù)據(jù)。比如用戶在電商網(wǎng)站中登錄、

    2024年02月12日
    瀏覽(46)
  • STM32的電動自行車信息采集上報系統(tǒng)(學(xué)習(xí))

    STM32的電動自行車信息采集上報系統(tǒng)(學(xué)習(xí))

    針對電動自行車實時監(jiān)管不便的問題,設(shè)計了一種基于STM32的電動自行車信息采集系統(tǒng),通過獲取電池、位置和行駛狀態(tài)信息并上報到服務(wù)器中,實現(xiàn)實時監(jiān)管。 通過多路串口請求電池、行駛狀態(tài)和位置信息,以并發(fā)方式進行數(shù)據(jù)接收、解析、模塊控制和數(shù)據(jù)上報等操作;

    2024年02月14日
    瀏覽(21)
  • 【APUE】網(wǎng)絡(luò)socket編程溫度采集智能存儲與上報項目技術(shù)------多路復(fù)用

    【APUE】網(wǎng)絡(luò)socket編程溫度采集智能存儲與上報項目技術(shù)------多路復(fù)用

    作者簡介: 一個平凡而樂于分享的小比特,中南民族大學(xué)通信工程專業(yè)研究生在讀,研究方向無線聯(lián)邦學(xué)習(xí) 擅長領(lǐng)域:驅(qū)動開發(fā),嵌入式軟件開發(fā),BSP開發(fā) 作者主頁:一個平凡而樂于分享的小比特的個人主頁 文章收錄專欄:網(wǎng)絡(luò)socket編程之溫度采集智能存儲與上報項目,本

    2024年04月10日
    瀏覽(34)
  • 基于USB總線技術(shù)的數(shù)據(jù)采集系統(tǒng)接口FPGA實現(xiàn)——高效、穩(wěn)定的數(shù)據(jù)采集神器!

    基于USB總線技術(shù)的數(shù)據(jù)采集系統(tǒng)接口FPGA實現(xiàn)——高效、穩(wěn)定的數(shù)據(jù)采集神器! USB總線技術(shù)已經(jīng)成為了當(dāng)今數(shù)據(jù)傳輸領(lǐng)域的主流技術(shù),它具有現(xiàn)場可編程性強、對外部器件兼容性好以及傳輸速度高等優(yōu)點。因此,基于USB總線技術(shù)的數(shù)據(jù)采集系統(tǒng)已經(jīng)廣泛應(yīng)用于各種實際場景。

    2024年02月09日
    瀏覽(27)
  • 基于Java疫情健康上報管理系統(tǒng)設(shè)計和實現(xiàn)(源碼+LW+部署講解)

    基于Java疫情健康上報管理系統(tǒng)設(shè)計和實現(xiàn)(源碼+LW+部署講解)

    博主介紹 : ? 全網(wǎng)粉絲30W+,csdn特邀作者、博客專家、CSDN新星計劃導(dǎo)師、Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和學(xué)生畢業(yè)項目實戰(zhàn),高校老師/講師/同行前輩交流 ? 主要內(nèi)容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P

    2024年02月19日
    瀏覽(16)
  • 基于Python的網(wǎng)絡(luò)爬蟲電商數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年02月04日
    瀏覽(19)
  • 基于FPGA的快速數(shù)據(jù)采集系統(tǒng)在Matlab中的實現(xiàn)

    基于FPGA的快速數(shù)據(jù)采集系統(tǒng)在Matlab中的實現(xiàn) 摘要:本文介紹了如何使用Matlab實現(xiàn)基于FPGA的高速數(shù)據(jù)采集系統(tǒng)。通過結(jié)合Matlab和FPGA的強大功能,我們可以實現(xiàn)高效的數(shù)據(jù)采集和處理,以滿足各種應(yīng)用的需求。本文將詳細(xì)介紹FPGA的基本概念、Matlab中與FPGA相關(guān)的工具和函數(shù),以

    2024年02月03日
    瀏覽(28)
  • 基于python重慶招聘數(shù)據(jù)爬蟲采集系統(tǒng)設(shè)計與實現(xiàn)(django框架)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月23日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包