我试图用jsdiff(https://github.com/kpdecker/jsdiff)在网页中显示两个文件的差异。在网页中显示截断差异
总的来说,它的效果很好,但如果在一个巨大的文件中只有很小的变化,我不希望显示整个文件内容,而是想截断未修改的部分。很像差异显示在github上。
我有什么: AngularJS代码使用jsdiff计算DIFF:
var serverValue = selectedServiceConfig.getServerConfigDataString();
$scope.diff = JsDiff.diffLines(serverValue, newValue);
然后HTML:
<pre id="diff">
<span ng-repeat="change in diff" ng-class="{'diff-added': change.added, 'diff-removed': change.removed, 'diff-no-change': !change.added && !change.removed}">{{change.value}}</span>
</pre>
和一些CSS:
#diff {
.diff-no-change {
opacity: 0.54;
}
.diff-added{
color: green;
}
.diff-removed{
color: red;
text-decoration: line-through;
}
}
现在,想象灰色部分是1000行。我不想全部展示。但只是其中的一部分接近实际差异。虽然,为了提供上下文,我不想完全删除它,这很容易。
希望我的问题现在更清晰。
是的,虽然我不想删除所有未更改的部分。我仍然想要一些线条来提供上下文。 – tkarls
好吧,你可以做到这一点。但具体的实施是你的一部分。我不会提供完整的解决方案,我刚才提到了如何省略不变的部分。顺便说一句,我希望它能帮助你! – Luke