基于JavaScript的diff实用程序

时间:2010-06-16 13:22:40

标签: javascript diff

我正在寻找用JavaScript编写的 diff 等价物,它只返回/打印相关的行。我不希望两个全文显示在彼此旁边并突出显示差异,但只是想要实际的差异(加上一些缓冲线来了解差异的位置),类似于linux diff实用程序的输出。

有人知道这样做的javascript函数吗?应该识别所有差异(甚至改变空白)。感谢。

10 个答案:

答案 0 :(得分:31)

我完全重建了jsdifflib实用程序以提高速度。由于我的版本不需要DOM访问它至少快4.5倍,而且它还扩展为突出显示每行中的字符差异。

http://prettydiff.com/diffview.js

您可以直接在http://prettydiff.com/

使用在线工具对此进行测试

答案 1 :(得分:29)

jsdifflib内联模式比较,尝试调整上下文大小以显示所需的所需更改窗口。有一个演示here

答案 2 :(得分:26)

Google还有google-diff-match-patch

也可在NPM

上找到
npm install diff-match-patch

答案 3 :(得分:5)

答案 4 :(得分:4)

我不太了解linux或linux中的diff实用程序,但这可能是你正在寻找的jsdifflib。你可以在那里找到一个实例,看看它是否适合你。

答案 5 :(得分:4)

查看我的最小实施:https://github.com/Slava/diff.js

答案 6 :(得分:3)

结帐CodeMirror。努夫说。

答案 7 :(得分:3)

查看wikEd diff JavaScript库。还有online tool

wikEd diff具有内嵌文本与块移动突出显示和基于字符/单词的分辨率的比较。它针对维基百科源文本进行了优化,但适用于任何类型的文本或代码。库代码是完全可定制的,具有Unicode支持,被广泛评论,并且属于公共领域。

答案 8 :(得分:2)

我知道这个老问题,但如果你的节点工作或想要与requirejs / commonjs模块兼容的东西

我真的很喜欢https://www.npmjs.com/package/diff

console.log(diff.createPatch('some file name.txt', expected, actual));

答案 9 :(得分:1)

jsdifflib看起来很有希望 - 尝试从该页面链接的演示。