在团队开发时,经常会出现多个成员改动同一份代码,这个时候文本高亮对比就显得尤为重要,它可以清晰直观的展示改动的部分,效果如【图一】
当然,本期主要只考虑文本比对算法,而不是严谨完善的功能,这个算法只负责记录变更内容,而不会像 git 那样去记录改动代码的用户
首先要实现这个功能,有很多方案,最著名的比如 LCS 最长公共子序列算法,行比较算法,哈西算法,统计学模型,Myers 算法,编辑距离算法… …
💡本期参考的是 jsDiff 的 Levelshtein 的编辑距离算法(仅作简单实现),话不多说,让我们开始吧
💡注释蛮详细的,我就不在这里多写了,顺着节奏看图
首先先了解下展示页面的整体结构【图二】,先不用考虑太多功能,而是从简单的样式出发
在了解基本结构和使用方法后,我们来看看功能代码【图三】,同样先折叠复杂的实现,大致观察
❤️接下来就到了重点部分,文本匹配【图四】【图五】,他们是实现这个功能的核心,也是重难点
最后部分是一些细节的处理【图六】【图七】
最后用稍微复杂的代码再次测试效果【图八】
到此本文就结束了,这个算法还有许多值得完善的地方,有感兴趣的读者可以自行研究[玫瑰]
[彩虹]pluie
[彩虹]2023-08-25