把旧文本放在左侧、新文本放在右侧,停止输入约 300 毫秒后就会自动比较。只出现在右侧的行高亮为新增,只出现在左侧的行高亮为删除;位置相邻的一组删除和新增会配对成修改,并继续标出这一行里具体变了哪些字符。结果既可以左右并排查看,也可以切到内联视图按 - / + 顺序阅读。
差异算法在独立 Web Worker 中运行,新输入到来时会终止旧任务,主线程只负责分批渲染,因此大文本也不会在每次按键时卡住页面。单侧上限 200 万字符;结果超过 4000 行时只展示前 4000 行,但完整统计仍保留。每行结尾都会显式标出:有换行显示 ␊,最后一行没有结尾换行显示 ∅,所以"末尾多了一个换行"这类差异不会被悄悄忽略。浏览器会把 CRLF 与 CR 统一成 LF,因此只改换行符风格不会被判为差异。
左右都可以上传文本文件,读取与比较全部在浏览器本地完成,没有上传接口,也不会把内容写进本地存储。上传前会检查 5 MiB 大小、UTF-8 编码和 NUL 字节;复制结果采用统一差异文本,方便粘贴到工单、代码评审或聊天中。
只出现在右侧的行标为新增,只出现在左侧的行标为删除;位置相邻的一组删除和新增会配对为修改,并在行内进一步标出变动字符。统计区分别显示新增、删除、修改和相同行数。
可以。差异算法在 Web Worker 中运行,输入停止约 300 毫秒后才计算,旧任务会在新输入到来时取消;结果最多渲染前 4000 行,避免一次创建过多 DOM 卡住页面,完整统计仍会保留。
不会。文本文件由浏览器的 File API 在本地读取,比较由同源 Worker 完成,没有上传接口,也不会把左右内容写入本地存储。
不会。每行结尾都会显式标出:有换行显示为 ␊,最后一行没有结尾换行显示为 ∅,因此末尾多一个或少一个换行也能看出来。浏览器会把 CRLF 与 CR 统一成 LF,所以只改换行符风格不会被判为差异。
复制结果采用易读的统一差异文本:相同行以空格开头,删除行以减号开头,新增行以加号开头。超过 100 万字符时复制文本会截断并明确提示,避免占满剪贴板和浏览器内存。