基于JavaScript的diff实用程序

pok*_*oke 65 javascript diff

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

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

aus*_*ney 32

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

http://prettydiff.com/diffview.js

您可以直接在http://prettydiff.com/上使用在线工具进行测试.

  • 只是一个后续:我已将这个宝贝(prettydiff)合并到我的 li'l web 应用程序中,我喜欢它。我很喜欢。 (2认同)
  • 嘿,你能告诉我如何在 js 中使用 Prettydiff 吗?我必须只包含 Prettydiff.js 吗? (2认同)
  • 好.这件事情非常糟糕 - 我不知道为什么会有这么多的选票.我不能让它返回任何类型的对象.它坚持要求返回HTML,其中包括强制标语,该标语为图书馆本身做广告. (2认同)

Sco*_*ale 31

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

  • jsdifflib很不错但它没有按字差异显示单词.它只显示不同的线条. (2认同)
  • [jsdiff](https://www.npmjs.com/package/diff) 是标准且活跃的 Node.js 文本差异库 (2认同)

Gia*_*rdi 26

还有谷歌的Diff-比赛补丁来自谷歌

也可在NPM上获得

npm install diff-match-patch
Run Code Online (Sandbox Code Playgroud)

  • 这使得它更易于使用,特别是在带有 webpack 等的现代网络浏览器中:https://www.npmjs.com/package/diff-match-patch (2认同)

ims*_*vko 6

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


Dan*_*l F 6

  • CodeMirror 不再需要任何服务器端差异计算 (2认同)
  • 很高兴知道,然后他们还可以删除“这个插件依赖于 google-diff-match-patch 库来计算差异。”-注意,它仍然在 http://codemirror.net/demo/merge.html 上 (2认同)
  • 它仍然需要外部JS“ https://cdnjs.cloudflare.com/ajax/libs/diff_match_patch/20121119/diff_match_patch.js”,但不再需要服务器端代码 (2认同)

小智 5

查看wikEd diff JavaScript 库。还有一个在线工具

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