先按行比,再按字比
差异分两层算:先用行级算法找出哪些行被增、删、改动,再把判定为「改动」的行做一次逐字符比较,高亮出具体变了哪几个字。所以你能同时看到「哪一段变了」和「具体改了什么」。
改动行会被两两配对摊平成左右对齐的行对:左边删了几行、右边加了几行会并排显示,多出来的一侧留空 —— 这是看合并结果时最不容易看漏的排布。
两种视图分别什么时候用
并排视图左右两栏带行号,适合逐段核对合同、配置文件的改动;统一视图按先减后加的顺序排列,输出形式和 git diff 一致,适合直接贴给同事或贴进工单。
统计区会给出新增行、删除行、相同行和改动处的数量,先看这几个数字就能判断改动规模,再决定要不要逐行看。
超大文本会自动降级
逐字符比较成本远高于按行比较,所以两侧合计超过 12 万字符时会跳过逐字高亮,只按行标注差异;单次逐字计算也设了 700 毫秒的兜底,超时同样降级为行级。
这不是出错,而是保证页面不会因为你贴了两份长日志就卡死。真需要精确结果,把文本按章节拆开分段比较。
「忽略空白」到底忽略了什么
勾上之后:行内连续空白折叠成一个空格,行尾空白去掉。它能让「只改了缩进」的差异不再刷屏 —— 重新格式化过的代码对比时特别有用。
但它不等于「忽略所有空白差异」(行首缩进仍参与比较),也**没有**忽略大小写的开关。要忽略大小写,请先自行统一大小写再比较。
合同和配置文件可以放心对比
比较全程在浏览器里完成,用的是同域加载的 jsdiff,没有任何网络请求。合同前后两版、含密钥的配置文件、未发布的手稿都能直接粘进来比对。
输入停顿约 180 毫秒就自动重新比较,不用点按钮;左右两栏可以一键交换,改起来很顺手。
它不是什么
不做目录或文件的批量对比,也不做三方合并(merge)—— 那些需要版本控制系统的上下文。这里只比较你贴进来的两份文本。
差异结果可以复制成统一 diff 文本,但没有下载按钮,也没有行数和文件大小的硬上限,实际瓶颈是浏览器内存。
常见问题
为什么有些行只有整行高亮,没有标出具体哪个字变了?
触发了降级:两侧合计超过 12 万字符,或单次逐字计算超过 700 毫秒,此时只按行标注。分段比较可恢复逐字高亮。
勾了忽略空白还是有差异?
该开关只折叠行内连续空白并去掉行尾空白,行首缩进的差异仍会显示。此外没有忽略大小写的选项,需先自行统一。
能把差异贴给别人看吗?
能。切到统一视图后点复制,得到的是标准 diff 文本(`- 行号 内容` / `+ 行号 内容`),格式与 git diff 一致。
对比的文本会上传吗?
不会。差异计算全在浏览器本地完成,jsdiff 也从本站同域加载,没有任何请求带走你的文本。