GrowingIO埋点(前端)

GrowingIO埋点(前端)

一、CDN集成SDK

1、初始化

​ 当用户加载页面的时候,会异步加载 WebJS SDK,不会影响到用户的加载速度,所以一般建议把这段代码加入到 <head></head> 中的最下面,这样能最大限度的保证数据采集的完整性。如果有限制只能加入到 <body></body> 的最下面,也是可以的,但这样潜在可能会丢失掉那些一加载页面就立刻关闭的数据。

官方文档

<script type='text/javascript'>
    // 配置项 JSON对象
    const options = {
	host: 'your host', // 初始化时填写,否则初始化失败
	hashtag: true/false, // 单页面应用埋点
	appVer:'Android/ios/微信内嵌', // 设置H5页面所在运行环境
	compress: true/false, // 获取的数据是否压缩
    debug: true  // 打开debug调试能力
}

    !(function (e, n, t, s, c) {
    var o;
    e[s] =
      e[s] ||
      function () {
        (e[s].q = e[s].q || []).push(arguments);
      };
    (c = c || 'vds'),
      (e._gio_local_vds = c),
      (e[c] = null !== (o = e[c]) && void 0 !== o ? o : {}),
      (e[c].namespace = s);
    var d = n.createElement('script');
    var i = n.getElementsByTagName('script')[0];
    (d.async = !0), (d.src = t), i.parentNode.insertBefore(d, i);
  })(window, document, 'https://assets.giocdn.com/sdk/webjs/gdp-full.js', 'gio');
  
  gio('init', 'your projectId', 'your dataSourceId',options);
  gio('send');
</script>
<!-- 如果在内网环境下开发,建议将gio.js文件下载到本地,以相对路径方式引入 否则可能会初始化不成功 -->

**注意:**您创建Web应用所在项目的项目ID(在growingio平台建立相对应项目后生成并提供给前端埋点使用) 替换代码中的 your projectId (项目id)、your dataSourceId(数据源id)、your host(发数请求host)。

2、页面使用
gio('setUserId',userId)
// userId(字符串) 登录系统用户的ID 设置用户ID
gio('clearUserId')
// 退出登录时清除用户ID
gio('track',eventId,eventLevelVariables) // 此方法多数时在页面点击事件时进行调用,以用来统计用户点击次数
// evenId 事件标识符 (字符串)
/* eventLevelVariables 包含事件级变量的JSON对象 
  例如 {
  		 pageName:'登录页面',// 按钮所在页面
  		 buttonName: '登录' // 用户点击的按钮名称
  	  }
*/

页面控制台出现下面情况,说明成功了。

在这里插入图片描述

二、npm集成SDK

1、初始化

官方文档

1.1、安装命令:
npm i gio-webjs-sdk --save
1.2、在入口文件初始化使用 SDK(例如:app.js、index.js)
import gio from 'gio-webjs-sdk/gdp-full'

gio('init', 'your accountId', 'your dataSourceId', {
  // OP私有部署客户请填写serverUrl,Saas客户请忽略
  // https://www.com (采集host地址)
  serverUrl: 'your server url',
  ...other settings
  debug: true
})

window.gio = gio
2、页面使用

埋点事件(track)

gio('track', eventName: string, attributes?: Object, callback?: function);

详情

gio('track', 'chery_dealerportal_tabMainPageView', 	 {
    chery_dealerportal_menuFirstName_var: '工作台',
    chery_dealerportal_pageName_var: '工作台',
    chery_dealerportal_pageSubName_var: '无'
  })

成功后可在系统找到

在这里插入图片描述

<think>嗯,用户问的是前端埋点插件,我需要先明确什么是前端埋点埋点主要是为了收集用户行为数据,比如点击、浏览、停留时间等,帮助分析用户行为和产品优化。前端埋点插件应该是指嵌入在前端代码中的工具或库,用于自动化或简化数据收集的过程。 首先,我得考虑用户可能的背景。可能是前端开发者,或者产品经理,或者数据分析师。如果是开发者,他们可能更关心如何集成插件、代码示例、性能影响等。如果是非技术角色,可能更关注功能、数据准确性、使用场景等。需要平衡技术细节和整体介绍。 接下来,常见的前端埋点方式有哪些?手动埋点、自动化埋点、可视化埋点等。插件可能属于自动化或可视化类型。需要列举一些主流插件,比如百度统计、Google Analytics、友盟+,还有开源库如Sentry、Matomo。可能还要提到一些专门的前端监控工具,比如Fundebug。 然后,插件的核心功能应该包括事件跟踪、页面访问统计、错误监控、性能监测等。要解释每个功能的作用,比如事件跟踪用户点击,错误监控捕获JS异常等。 用户可能想知道如何选择插件,需要考虑数据隐私、合规性(比如GDPR)、集成难度、是否支持定制化数据上报。此外,插件的性能影响也很重要,避免影响页面加载速度。 还要提到实现原理,比如基于事件监听、拦截全局方法(如addEventListener)、发送HTTP请求或使用Image对象上报数据。可能举一个简单的手动埋点例子,再用插件简化后的代码对比,展示便利性。 注意事项方面,数据去重、采样率、跨域问题、SPA(单页应用)的路由切换处理等都需要考虑。可能还需要提到测试和验证数据是否正确上报,比如使用浏览器的开发者工具检查网络请求。 总结部分需要强调插件的作用,帮助用户高效收集数据,优化产品体验,同时提醒选择时需考虑的因素。确保回答结构清晰,分点说明,让不同背景的用户都能理解。</think>前端埋点插件是用于采集用户行为数据的工具,通过代码集成到网页或移动端应用中,帮助开发者跟踪用户交互、性能指标和异常情况。以下是逐步说明: 一、核心功能 1. **行为追踪** - 点击事件:$$ \text{记录按钮点击、菜单展开等} $$ - 页面访问:统计PV(页面浏览量)/UV(独立访客) - 用户路径:追踪用户在站内的跳转路径 2. **性能监控** - 加载时间:$$ \text{首屏时间} T_{\text{load}} = t_{\text{DOMContentLoaded}} - t_{\text{navigationStart}} $$ - 接口耗时:监控API请求响应时间 3. **异常捕获** - JavaScript错误:通过`window.onerror`监听 - 资源加载失败:监控`<img>`, `<script>`等标签的onerror事件 二、实现原理 1. **事件监听** ```javascript // 示例:自动捕获点击事件 document.addEventListener('click', e => { const path = e.composedPath()[0] if (path.dataset.track) { // 通过data属性标记需埋点元素 sendToServer({ eventType: 'click', elementId: path.id, timestamp: Date.now() }) } }) ``` 2. **数据上报** - 使用`navigator.sendBeacon()`保证页面关闭时数据不丢失 - 图片打点:`new Image().src = 'https://api.com/track.gif?data=xxx'` 三、主流方案对比 | 方案类型 | 代表工具 | 特点 | |----------------|-------------------|------------------------------| | 第三方SaaS | Google Analytics | 开箱即用,支持可视化分析 | | 开源SDK | Matomo | 数据自主可控,需自行部署 | | 自研插件 | 企业内部方案 | 高度定制化,开发成本较高 | 四、开发注意事项 1. **数据压缩** - 采用`zlib`进行gzip压缩:$$ \text{压缩率} \eta = \frac{S_{\text{origin}} - S_{\text{compressed}}}{S_{\text{origin}}} $$ 2. **节流控制** ```javascript // 防止高频事件导致数据风暴 const throttleReport = _.throttle(sendData, 1000) // 1秒节流 ``` 3. **隐私合规** - 遵循GDPR/CCPA等规范 - 提供`opt-out`机制: ```html <script> window.__trackingConsent = localStorage.getItem('trackingConsent') </script> ``` 五、推荐技术栈 1. 基础埋点:使用`mixpanel`或`amplitude` 2. 全链路监控:`Sentry` + `Prometheus` + `Grafana`组合 3. 轻量级方案:`umeng+`或`GrowingIO` 实际应用中建议根据业务场景选择方案,例如电商类应用需重点监控购买漏斗:$$ \text{转化率} C = \frac{N_{\text{order}}}{N_{\text{pv}}} \times 100\% $$,同时注意埋点带来的性能损耗应控制在5%以内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值