前端埋点

简介: 前端埋点
  • 什么是埋点?
    在前端代码中嵌入特定的代码片段,用于记录用户在网站或应用程序中的行为和交互方式
  • 为什么要做?
    要目的是为了收集和分析用户行为数据,以便优化产品和提高用户体验。具体来说,埋点可以帮助前端开发人员了解用户在应用中的行为和交互方式,例如点击、滚动、输入等,以及用户使用的设备、浏览器、操作系统等信息。通过对这些数据的分析,前端开发人员可以发现用户的痛点和需求,优化产品设计和功能,提高用户满意度和留存率。此外,埋点还可以帮助前端开发人员监控应用的性能和稳定性,及时发现和解决问题,提高应用的可靠性和安全性。

数据库设计用户画像表

  • 需要在画像表(user_log)新增的字段
  • unique_id—用户唯一值(用户ip+设备 md5加密)
  • device_type—设备类型
  • region—地域(地图)
  • referer—来源(网站)
  • gmt_create—创建时间
  • gmt_modified—修改时间

image.png

  • 获取pv、uv
  • pv:统计user_log的个数(一个用户访问多次记为多次)
  • uv:根据uniqueId分组获取总个数(一个用户访问多次记为1次)
  • 终端类型分布
  • device_type:各个终端的占比
  • 地域分布
  • region:各个省的访问人数
  • 来源
  • referer:来源网站访问人数

用户的PV/UV统计接口开发 (uv - id pv - 数据条数)

数据层逻辑开发

// 流量访问统计
flowStat: async () => {
  let timeQuery = [dayjs().subtract(7, 'day').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')]
  // pv统计
  let pvSql = `select gmt_create,count(*) as value from user_log where gmt_create between ? and ? group by gmt_create`
  // sequelize原始查询
  let pvList = await DB.sequelize.query(pvSql, {
    replacements: timeQuery,
    type: QueryTypes.SELECT
  })
  // uv统计
  let uvSql = `select gmt_create, count(distinct unique_id) as value from user_log where gmt_create between ? and ? group by gmt_create`
  // sequelize原始查询
  let uvList = await DB.sequelize.query(uvSql, {
    replacements: timeQuery,
    type: QueryTypes.SELECT
  })
  return BackCode.buildSuccessAndData({ data: { pv: pvList, uv: uvList } })
}

  • 后端用户画像统计接口开发
userLog: async (req) => {
  // 1.ip+设备拼接md5进行加密生成用户唯一值
  let uniqueId = SecretTool.md5(GetUserInfoTool.getIp(req) + GetUserInfoTool.getUseragent(req))
  // 2.获取用户的设备类型
  let userAgent = GetUserInfoTool.getUseragent(req)
  let device_type = '';
  if (/Android/i.test(userAgent)) {
    device_type = 'Android';
  } else if (/iPhone|iPad/i.test(userAgent)) {
    device_type = 'IOS';
  } else if (/Windows|Macintosh/i.test(userAgent)) {
    device_type = 'PC';
  }
  // 获取用户所在地域
  let ip = GetUserInfoTool.getIp(req)
  let geo = geoip.lookup(ip)
  // 用户访问的来源(前端通过document.referrer获取)
  let referer = req.body?.referer || '直接访问'
  // 插入数据库
  await DB.UserLog.create({ unique_id: uniqueId, device_type, region: geo?.region, referer })
  return BackCode.buildSuccess()
}
geoip-lite插件获得地域。
// 终端类型分布
deviceType: async () => {
  let allNum = await DB.UserLog.count()
  let deviceTypeSql = `select device_type,count(*) as value from user_log group by device_type`
  // sequelize原始查询
  let deviceTypeList = await DB.sequelize.query(deviceTypeSql, {
    type: QueryTypes.SELECT
  })
  let newList = deviceTypeList.map((item) => {
    let value = (item.value / allNum * 100).toFixed(0)
    return { ...item, value }
  })
  return BackCode.buildSuccessAndData({ data: newList })
},

目录
相关文章
|
数据采集 前端开发 搜索推荐
埋点tracker:前端数据埋点-方案设计思路梳理
埋点tracker:前端数据埋点-方案设计思路梳理
1605 0
|
6月前
|
存储 监控 前端开发
前端埋点上报的几种方式
前端埋点上报的几种方式
280 0
|
移动开发 前端开发 数据库
前端埋点实现
前端埋点实现全过程介绍。
308 1
前端埋点实现
|
数据采集 SQL 监控
一次基于日志服务(SLS)进行前端业务埋点的实现过程
一次基于日志服务(SLS)进行前端业务埋点的实现过程
1132 1
|
存储 开发框架 前端开发
埋点tracker:前端埋点服务-技术要点梳理
埋点tracker:前端埋点服务-技术要点梳理
537 0
|
前端开发 数据格式
基于Vue3实现一个前端埋点上报插件并打包发布到npm(下)
基于Vue3实现一个前端埋点上报插件并打包发布到npm(下)
625 0
|
JavaScript 前端开发 UED
基于Vue3实现一个前端埋点上报插件并打包发布到npm(上)
基于Vue3实现一个前端埋点上报插件并打包发布到npm(上)
670 0
|
JSON JavaScript 前端开发
小满 前端埋点SDK 带你 从0 开发 并且发布npm
使用rollup 应为 rollup打包干净,而webpack非常臃肿,可读性差,所以rollup非常适合开发SDK和一些框架,webpack 适合开发一些项目
500 0
小满 前端埋点SDK 带你 从0 开发 并且发布npm
|
前端开发 JavaScript API
你只会用前端数据埋点 SDK 吗?(二)
你只会用前端数据埋点 SDK 吗?
300 0
|
监控 前端开发 JavaScript
你只会用前端数据埋点 SDK 吗?(一)
你只会用前端数据埋点 SDK 吗?
626 0