Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中使用人类可读的差异突出显示来呈现文本差异_Javascript_Node.js_Diff - Fatal编程技术网

如何在javascript中使用人类可读的差异突出显示来呈现文本差异

如何在javascript中使用人类可读的差异突出显示来呈现文本差异,javascript,node.js,diff,Javascript,Node.js,Diff,我需要打印内联差异的文本(代码)在一个人可读的格式(例如:不机器优化) 我的平台是Javascript(primary node.js,浏览器)。我有自己的打印机/样式器,但在生成正确的差异更改时遇到问题 重要的是人类的直觉变化:所以对每行的变化有强烈的偏见,而对随机的零碎字母的偏见非常低 看起来不错的非JS diff渲染器示例有Tortoise SVN/GIT中的示例和github.com上的diff渲染器。我相信github上的补丁读取的是“标准”补丁格式,但我确信要将其转换成一个非常内联的

我需要打印内联差异的文本(代码)在一个人可读的格式(例如:不机器优化)

我的平台是Javascript(primary node.js,浏览器)。我有自己的打印机/样式器,但在生成正确的差异更改时遇到问题

重要的是人类的直觉变化:所以对每行的变化有强烈的偏见,而对随机的零碎字母的偏见非常低

看起来不错的非JS diff渲染器示例有Tortoise SVN/GIT中的示例和github.com上的diff渲染器。我相信github上的补丁读取的是“标准”补丁格式,但我确信要将其转换成一个非常内联的差异,还需要更多的逻辑

我尝试过的一些模块:

  • diff
    ()经典,但它有线条和文字或字符差异的非自然混合。(这在摩卡咖啡中使用,但有缺陷)

  • chardiff
    ()基于
    diff
    ,但它有一个为人类可读性而设计的语义过滤器:它看起来更好,但仍然提供零碎的单字母更改(经典的diff不会)

  • diff-match-patch
    (),很有希望,但仍然不是100%(仍然有一些违反直觉的差异)

  • 我想我需要自己组装一些东西,使用这些模块中的一个作为组件(每行等),但我不确定如何做


    这是一个已解决的问题吗?

    我知道现在已经很晚了,但我已经开发出一种方法,似乎效果很好,速度也很快。为了您将来的参考,请看