我試圖用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