rrdom
概述
rrdom 是一个虚拟 DOM 库,rrweb 使用它来回放 DOM 变更。它是一个独立的库,可用于创建虚拟 DOM 树,并将补丁应用到真实 DOM 上。rrweb 使用它来优化回放性能,尤其是在跳转(seeking)时。
有关 rrweb 的更多信息,请参阅指南。
rrdom 发布说明
2.1.1
补丁变更
- 更新依赖 []:
- rrweb-snapshot@2.1.1
2.1.0
补丁变更
- 更新依赖 [
b08a06f]:- rrweb-snapshot@2.1.0
2.0.1
补丁变更
- 更新依赖 [
5f52d63]:- rrweb-snapshot@2.0.1
2.0.0
重大变更
#1497
2606a2a感谢 @Juice10! - 分发的文件使用了新的文件名、路径和扩展名。重要:如果你直接引用分发的文件或类型,可能需要更新路径/文件名。例如你从rrweb/typings/...或rrdom/es导入。但如果你使用import rrweb from 'rrweb'的方式导入,则不会受到此变更的影响。 如果你直接在 script 标签中引入 rrweb 文件,可能需要将该路径更新为.umd.cjs文件。所有.js文件现在使用 ES 模块,可在现代浏览器、node.js 以及支持 ES 模块的打包器中使用。所有 npm 包现在还同时提供.cjs和.umd.cjs文件。.umd.cjs文件是将所有文件打包在一起的 CommonJS 模块,便于向浏览器环境分发单个文件(类似于之前的.js文件)。.cjs文件是可在旧版 Node.js 环境中使用的 CommonJS 模块。类型在package.json中会有更完善的定义;如果你需要特定类型,它们可能从新的包中导出(例如PlayerMachineState和SpeedMachineState现在从@rrweb/replay导出)。请查看package.json的main和exports字段了解可用文件。#1127
3cc4323感谢 @YunFeng0817! - 重构:在超大型基准测试用例中将性能提升 80%。- 重构:将 childNodes 的数据结构从数组改为链表
- 提升 “contains” 函数的性能。新算法会将复杂度从 O(n) 降至 O(logn)
#1031
ad9bc3e感谢 @Juice10! - 将 rrweb 共享的事件和录制器类型移至新的@rrweb/types包。
次要变更
#1035
2a80949感谢 @Juice10! - 新增通过recordCrossOriginIframes录制跨域 iframe 的支持。#989
3809060感谢 @YunFeng0817! - 新增对可构造样式表adoptedStyleSheets的录制与回放支持,包括样式表变更、replace/replaceSync、shadow root、iframe、实时模式以及虚拟 DOM 回放。
补丁变更
#1222
b798f2d感谢 @YunFeng0817! - 修复:rrdom 的 bug- 修复 diff 算法中的一个 bug。
- 忽略 iframe 的 “srcdoc” 属性,以避免覆盖内容。
#1126
227d43a感谢 @YunFeng0817! - 重构:将所有 CommonJS 模块打包脚本的后缀从 “js” 改为 “cjs” #1087。#1139
f27e545感谢 @YunFeng0817! - 修复:如果 RRNode 重复追加同一个子节点,该节点的子节点会形成无限链表。#1126
227d43a感谢 @YunFeng0817! - 修复:提升 rrdom 的健壮性 #1091。#1593
5a78938感谢 @daibhin! -NodeType枚举已从 rrweb-snapshot 移至 @rrweb/types 以下类型已从 rrweb-snapshot 移至 @rrweb/types:documentNode、documentTypeNode、legacyAttributes、textNode、cdataNode、commentNode、elementNode、serializedNode、serializedNodeWithId、serializedElementNodeWithId、serializedTextNodeWithId、IMirror、INode、mediaAttributes、attributes和DataURLOptions#1352
e607e83感谢 @juliecheng! - 修复:快进时滚动可能不会生效#1704
33e01f5感谢 @eoghanmurray! - 在 /dist/ 之外额外提供 /umd/ 输出目录,以便以 .js 扩展名提供 UMD(Universal Module Definition)文件,同时不违背 package.json 所设定的 “/dist/ 内所有 .js 文件均为模块” 的预期#995
55ebce7感谢 @YunFeng0817! - 修复延迟内联样式表链接的回放:改为更新现有 link/style 节点的属性,而不是添加子节点;并在替换 rrdom 节点时保留 mirror 元数据。#927
fd85c79感谢 @Juice10! - 通过正确处理负数和未序列化的节点 id,修复 iframe 重新加载和 rrdom diff 问题。#944
f1b23dd感谢 @YunFeng0817! - 修复快进回放,使 iframe 内的 canvas 图像数据在通过虚拟 DOM 路径重建时能够恢复。#923
a31e272感谢 @Juice10! - 即使 document 不在 mirror 中,也会从Document节点移除子节点。#925
01612b7感谢 @YunFeng0817! - 将 CSSOM 的依赖切换为 rrweb 自有的rrweb-cssom包。更新依赖 [
47a7c3f,a2c8a1a,40bbc25,22bc4c3,11f6567,123a81e,dc20cd4,3e9e42f,03b5216,46f1b25,cbbd1e5,a6893f7,c28ef5f,335639a,5e7943d,4014305,efdc167,f6f07e9,1385f7a,d7c72bf,f2419f2,c0f83af,e96f668,58c9104,227d43a,bc84246,d2582e9,82f6fec,eac9b18,02cc62d,2606a2a,d0fdc0f,f3cf092,a2be77b,527d9d3,f7c6973,efdc167,a7c33f2,43e4f5b,6f4e691,04ee6ed,5fbb904,d350da8,d08624c,e7f0c80,8aea5b0,314a8dd,5a78938,76df979,7c0dc9d,8e47ca1,07ac5c9,c6600e7,33e01f5,e08706a,be6bf52]:- rrweb-snapshot@2.0.0
2.0.0-alpha.20
补丁变更
- 更新依赖 []:
- rrweb-snapshot@2.0.0-alpha.20
2.0.0-alpha.19
补丁变更
2.0.0-alpha.18
补丁变更
#1593
5a78938感谢 @daibhin! -NodeType枚举已从 rrweb-snapshot 移至 @rrweb/types 以下类型已从 rrweb-snapshot 移至 @rrweb/types:documentNode、documentTypeNode、legacyAttributes、textNode、cdataNode、commentNode、elementNode、serializedNode、serializedNodeWithId、serializedElementNodeWithId、serializedTextNodeWithId、IMirror、INode、mediaAttributes、attributes和DataURLOptions更新依赖 [
02cc62d,04ee6ed,5fbb904,5a78938]:- rrweb-snapshot@2.0.0-alpha.18
2.0.0-alpha.17
次要变更
补丁变更
2.0.0-alpha.16
补丁变更
2.0.0-alpha.15
重大变更
- #1497
2606a2a感谢 @Juice10! - 分发的文件使用了新的文件名、路径和扩展名。重要:如果你直接引用分发的文件或类型,可能需要更新路径/文件名。例如你从rrweb/typings/...或rrdom/es导入。但如果你使用import rrweb from 'rrweb'的方式导入,则不会受到此变更的影响。 如果你直接在 script 标签中引入 rrweb 文件,可能需要将该路径更新为.umd.cjs文件。所有.js文件现在使用 ES 模块,可在现代浏览器、node.js 以及支持 ES 模块的打包器中使用。所有 npm 包现在还同时提供.cjs和.umd.cjs文件。.umd.cjs文件是将所有文件打包在一起的 CommonJS 模块,便于向浏览器环境分发单个文件(类似于之前的.js文件)。.cjs文件是可在旧版 Node.js 环境中使用的 CommonJS 模块。类型在package.json中会有更完善的定义;如果你需要特定类型,它们可能从新的包中导出(例如PlayerMachineState和SpeedMachineState现在从@rrweb/replay导出)。请查看package.json的main和exports字段了解可用文件。
补丁变更
2.0.0-alpha.14
补丁变更
2.0.0-alpha.13
补丁变更
- rrweb-snapshot@2.0.0-alpha.13
2.0.0-alpha.12
补丁变更
#1352
e607e83感谢 @juliecheng! - 修复:快进时滚动可能不会生效更新依赖 [
58c9104,a2be77b,a7c33f2,8aea5b0,314a8dd,7c0dc9d,07ac5c9]:- rrweb-snapshot@2.0.0-alpha.12
2.0.0-alpha.11
补丁变更
2.0.0-alpha.10
补丁变更
- 更新依赖 [
c6600e7]:- rrweb-snapshot@2.0.0-alpha.10
2.0.0-alpha.9
补丁变更
#1222
b798f2d感谢 @YunFeng0817! - 修复:rrdom 的 bug- 修复 diff 算法中的一个 bug。
- 忽略 iframe 的 “srcdoc” 属性,以避免覆盖内容。
更新依赖 [
d7c72bf]:- rrweb-snapshot@2.0.0-alpha.9
2.0.0-alpha.8
补丁变更
2.0.0-alpha.7
补丁变更
2.0.0-alpha.6
补丁变更
#1139
f27e545感谢 @YunFeng0817! - 修复:如果 RRNode 重复追加同一个子节点,该节点的子节点会形成无限链表。更新依赖 [
c28ef5f,f6f07e9,eac9b18,8e47ca1]:- rrweb-snapshot@2.0.0-alpha.6
2.0.0-alpha.5
重大变更
#1127
3cc4323感谢 @YunFeng0817! - 重构:在超大型基准测试用例中将性能提升 80%。- 重构:将 childNodes 的数据结构从数组改为链表
- 提升 “contains” 函数的性能。新算法会将复杂度从 O(n) 降至 O(logn)
补丁变更
#1126
227d43a感谢 @YunFeng0817! - 重构:将所有 CommonJS 模块打包脚本的后缀从 “js” 改为 “cjs” #1087。#1126
227d43a感谢 @YunFeng0817! - 修复:提升 rrdom 的健壮性 #1091。- rrweb-snapshot@2.0.0-alpha.5