# 使用指南
> 除通用的使用指南外,你可能还想通过[场景示例](./docs/recipes/index.zh_CN.md)了解特定场景下的使用方式,或是通过[设计文档](./docs)深入 rrweb 的技术细节。
## 安装
| 目标 | 推荐包 |
| ------------------------- | --------------------------------- |
| 大多数项目(录制 + 回放) | `@rrweb/record` + `@rrweb/replay` |
| 单包便捷接入 | `@rrweb/all` |
| 仅遗留兼容 | `rrweb` |
在绝大多数生产架构中,录制端和回放端运行在不同的运行时/页面。请在被录制应用中安装 `@rrweb/record`,在回放应用中安装 `@rrweb/replay`(或 `rrweb-player`)。除非有明确的高级场景,一般不要在同一页面同时引入两者。
### 1) Bundler / npm(推荐)
```shell
npm install @rrweb/record @rrweb/replay
```
```js
import { record } from '@rrweb/record';
import { Replayer } from '@rrweb/replay';
import '@rrweb/replay/dist/style.css';
```
如果你希望使用单一入口,也可以使用便捷包 `@rrweb/all`:
```shell
npm install @rrweb/all
```
```js
import { record, Replayer } from '@rrweb/all';
import '@rrweb/all/dist/style.css';
```
`require(...)` / CommonJS 仍可作为兼容方案使用(由各包的 `exports`/`main` 提供),但 2.x 的主路径是 ESM。
### 2) 无 Bundler 的浏览器场景(推荐 no-build)
推荐使用 ES modules + import map + jsDelivr `+esm`:
```html
```
也可以通过 `@rrweb/all` 便捷引入:
```html
```
### 3) 传统直接 `
```
该 UMD 构建会暴露全局变量 `rrweb`。
仅录制 / 仅回放的 UMD 兼容包:
```html
```
对应全局变量分别是 `rrwebRecord` 和 `rrwebReplay`。
#### 其他包
除了 `@rrweb/record` 和 `@rrweb/replay` 包之外,rrweb 还提供了其他不同用途的包。
- [rrweb](packages/rrweb):rrweb 的核心包,包括录制和回放功能。
- [rrweb-player](packages/rrweb-player):rrweb 的图形用户界面,提供时间线和暂停、快进、加速等按钮。
- [rrweb-snapshot](packages/rrweb-snapshot):处理快照和重建功能,将 DOM 及其状态转换为可序列化的数据结构。
- [rrdom](packages/rrdom):rrweb 的虚拟 dom 包。
- [rrdom-nodejs](packages/rrdom-nodejs):用于服务器端 DOM 操作的 rrdom 的 Node.js 版本。
- [@rrweb/all](packages/all):一个包含 `rrweb` 和 `@rrweb/packer` 的便捷包。
- [@rrweb/record](packages/record):一个用于录制 rrweb 会话的包。
- [@rrweb/replay](packages/replay):一个用于回放 rrweb 会话的包。
- [@rrweb/packer](packages/packer):一个用于打包和解包 rrweb 数据的包。
- [@rrweb/types](packages/types):包含 rrweb 包中共享的类型定义。
- [@rrweb/utils](packages/utils):包含 rrweb 包中共享的工具函数。
- [web-extension](packages/web-extension):rrweb 的网页扩展。
- [rrvideo](packages/rrvideo):一个用于处理 rrweb 中视频操作的包。
- [@rrweb/rrweb-plugin-console-record](packages/plugins/rrweb-plugin-console-record):一个用于记录控制台日志的插件。
- [@rrweb/rrweb-plugin-console-replay](packages/plugins/rrweb-plugin-console-replay):一个用于回放控制台日志的插件。
- [@rrweb/rrweb-plugin-sequential-id-record](packages/plugins/rrweb-plugin-sequential-id-record):一个用于记录顺序 ID 的插件。
- [@rrweb/rrweb-plugin-sequential-id-replay](packages/plugins/rrweb-plugin-sequential-id-replay):一个用于回放顺序 ID 的插件。
- [@rrweb/rrweb-plugin-canvas-webrtc-record](packages/plugins/rrweb-plugin-canvas-webrtc-record):一个用于通过 WebRTC 流式传输 `