rrweb 项目使用指南:从录制到回放的全流程解析

rrweb 项目使用指南:从录制到回放的全流程解析

rrweb record and replay the web rrweb 项目地址: https://gitcode.com/gh_mirrors/rr/rrweb

什么是 rrweb?

rrweb 是一款开源的 Web 会话录制与回放库,它能够完整记录用户在网页上的所有操作,包括 DOM 变化、鼠标移动、滚动、点击等交互行为,并支持精确回放这些操作。与传统的屏幕录制不同,rrweb 采用基于 DOM 序列化的技术,使得录制数据量极小且回放质量极高。

安装方式

直接引入脚本

对于快速集成,推荐使用 CDN 方式引入:

<!-- 引入样式文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/rrweb@latest/dist/style.css"/>

<!-- 引入核心库 -->
<script src="https://cdn.jsdelivr.net/npm/rrweb@latest/dist/rrweb.umd.min.cjs"></script>

如果只需要录制功能,可以仅引入录制模块:

<script src="https://cdn.jsdelivr.net/npm/@rrweb/record@latest/dist/record.umd.min.cjs"></script>

NPM 安装

对于现代前端项目,推荐使用 npm 安装:

npm install --save rrweb

核心功能模块

rrweb 采用模块化设计,主要包含以下功能模块:

  1. 录制模块:负责捕获网页上的所有交互和 DOM 变化
  2. 回放模块:将录制的数据还原为可交互的会话回放
  3. 快照模块:处理 DOM 序列化和重建
  4. 插件系统:提供扩展功能如控制台记录、Canvas 录制等

基础使用教程

录制网页会话

录制功能的基本使用非常简单:

const events = [];

const stopRecording = rrweb.record({
  emit(event) {
    // 收集录制事件
    events.push(event);
    
    // 示例:当事件超过100条时停止录制
    if (events.length > 100) {
      stopRecording();
    }
  }
});

回放录制内容

回放需要先引入样式文件:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/rrweb@latest/dist/style.css"/>

然后初始化回放器:

const replayer = new rrweb.Replayer(events);
replayer.play(); // 开始回放

高级配置选项

录制配置

rrweb 提供了丰富的录制配置选项:

rrweb.record({
  emit(event) { /*...*/ },
  // 每100个事件后生成完整快照
  checkoutEveryNth: 100,
  // 隐私保护配置
  blockClass: 'no-record',  // 不录制特定元素
  maskTextClass: 'mask-text', // 文本内容打码
  // 输入元素处理
  maskInputOptions: {
    password: true,  // 密码输入自动打码
    email: true      // 邮箱输入打码
  },
  // 性能优化
  sampling: {
    mousemove: 50,  // 降低鼠标移动采样率
    scroll: 100     // 降低滚动采样率
  }
});

回放控制

回放器提供了完善的 API 控制:

const replayer = new rrweb.Replayer(events, {
  speed: 2,  // 2倍速回放
  skipInactive: true  // 跳过无操作时段
});

// 控制方法
replayer.play();     // 播放
replayer.pause();    // 暂停
replayer.goto(5000); // 跳转到第5秒

隐私保护机制

rrweb 提供了多种隐私保护方案:

  1. 元素屏蔽:添加 rr-block 类名的元素将被屏蔽
  2. 输入忽略:添加 rr-ignore 类名的元素不记录输入
  3. 文本打码:添加 rr-mask 类名的元素文本将被遮蔽
  4. 自动处理:密码输入框等敏感字段自动打码

性能优化策略

  1. 检查点机制:定期生成完整快照,避免事件链过长
  2. 采样率控制:降低高频事件(如鼠标移动)的采样率
  3. DOM 精简:移除不必要的 DOM 属性和样式
  4. 数据压缩:使用 packFn 对录制数据进行压缩

实际应用场景

  1. 用户行为分析:记录用户真实操作路径
  2. 错误复现:精确还原用户遇到问题时的场景
  3. 产品演示:创建交互式产品演示
  4. 用户支持:可视化用户反馈的问题

兼容性说明

rrweb 基于现代浏览器 API 实现,需要浏览器支持 MutationObserver,因此不支持 IE11 及以下版本。

通过本文的介绍,您应该已经掌握了 rrweb 的基本使用方法。rrweb 的强大之处在于其精细的录制能力和灵活的配置选项,能够满足各种复杂的网页录制需求。无论是用于用户行为分析还是产品演示,rrweb 都能提供高质量的解决方案。

rrweb record and replay the web rrweb 项目地址: https://gitcode.com/gh_mirrors/rr/rrweb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

裘羿洲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值