埋点方案

什么是埋点?

埋点是一种用于跟踪用户在网站或应用中行为的数据采集技术,通过记录点击、浏览等操作,帮助团队进行用户行为分析、AB 实验、错误监听,指导优化方向和资源分配

监控类型

基于要监控的内容,可以分为:数据监控、性能监控、异常监控

上报方式

手动上报

  • 在用户点击某个按钮时,开发者会在按钮的点击事件中调用埋点上报函数,如:
button.addEventListener('click', () => {        
	sendEvent('click_button', { userId: '12345', time: Date.now() });    
});
  • 页面展示:在页面加载完成时,埋点记录页面的展示情况
window.addEventListener('load', () => {    
	sendEvent('page_view', { page: 'homepage', time: Date.now() });
});
  • 组件 DOM 超出 50% 曝光
const observer = new IntersectionObserver((entries) => {
		entries.forEach(entry => {
			if (entry.isIntersecting && entry.intersectionRatio > 0.5) {
				sendEvent('component_exposure', { component: 'banner', time: Date.now() });
			}
		});
	}, {
		threshold: [0.5] // 超过50%可见时触发
	});
const component = document.querySelector('#banner');observer.observe(component);
  • 自动上报(无埋点)
    使用一些埋点平台(如百度统计、 GrowingIO、神策数据等),业务人员可以在后台系统的可视化界面上点击页面元素,配置该元素的埋点逻辑。系统会自动捕获该元素的操作,并将数据上报至服务器

百度统计举例:
网站:https://tongji.baidu.com/web5/welcome/login

image

添加埋点代码
https://tongji.baidu.com/main/setting/10000554972/home/site/getjs

image

vue项目中在main.js中添加

(function () {
    const hm = document.createElement("script");
    hm.src = "https://hm.baidu.com/hm.js?3e10ff72349f84b8f223690xxxxx";
    const s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(hm, s);
  })();
  router.beforeEach((to, from, next) => {
    if (_hmt) {
      if (to.path) {
        _hmt.push(["_trackPageview", "/#" + to.fullPath]);
      }
    }
    next();
  });

或者

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
    <script>
        const hostName = window.location.hostname.toLowerCase();
        // 判断正式环境才生效
        if (~hostName.indexOf('xxxxxxxxxx')){
            var _hmt = _hmt || [];
            (function() {
                var hm = document.createElement("script");
                hm.src = "https://hm.baidu.com/hm.js?xxxxxxxxxxxxxxxxxxxx";
                var s = document.getElementsByTagName("script")[0];
                s.parentNode.insertBefore(hm, s);
            })();
        }
    </script>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>
posted @ 2024-12-16 10:04  混名汪小星  阅读(2)  评论(0编辑  收藏  举报