Skip to content

BizDiffViewer 文本对比 ​

行级文本对比(纯前端零依赖 LCS 算法):split 左右分栏(删除 + 新增 zip 成对)/ unified 单栏双模式,增删行语义色着色、标题栏 ±统计、ignore-whitespace 忽略空白差异。版本对比、配置变更审计、发布单 diff 预览的标准件;超大输入(>2000×2000 行)自动降级全删全增保证可用。

基础用法(split 分栏) ​

发布前配置 -5
发布后配置 +6
1-server.port=8080
1server.port=8081
2-server.timeout=30
2server.timeout=60
3-db.host=192.168.1.10
3db.host=192.168.1.20
4db.port=3306
4db.port=3306
5-db.pool.max=20
5db.pool.max=50
6-log.level=info
6db.pool.min=5
7+log.level=warn
old-value / new-title 传文本即比对,标题栏实时统计 +新增 / -删除 行数。

unified 单栏 · 忽略空白 ​

v1.0 -2
v1.1 +2
1-function greet(name) {
2- console.log('hello, ' + name)
1+function greet(name, greeting) {
2+ console.log(greeting + ', ' + name)
3 return true
4}
mode="unified" 类 git diff 单栏视图;ignore-whitespace 忽略行首尾空白差异;css 变量控制最大高度。

JSON 配置对比 ​

当前配置 -3
待发布配置 +4
1{
1{
2 "app": "gateway",
2 "app": "gateway",
3- "replicas": 2,
3 "replicas": 4,
4- "timeout": 30,
4 "timeout": 60,
5 "features": {
5 "features": {
6 "cache": true,
6 "cache": true,
7- "retry": false
7 "retry": true,
8+ "circuit": true
8 }
9 }
9}
10}
配置发布单:stringify(obj, null, 2) 后行级比对(运维发布场景)。

忽略空白差异 ​

原(2 空格) -0
新(4 空格) +0
1function calc(a, b) {
1function calc(a, b) {
2const sum = a + b
2const sum = a + b
3return sum
3return sum
4}
4}
ignore-whitespace:仅缩进变化不算 diff(格式化 / 编辑器空格风格差异场景)
ignore-whitespace:缩进风格变化不算修改。

字段级对照(table 模式) ​

变更前 +0~3-0
仓库名称
华东 1 号仓
→
华东 1 号冷链仓
修改
温度上限(℃)
8
→
6
修改
告警手机
13800000001
→
13800000002
修改
mode="table":old-value / new-value 传对象(非字符串),逐字段对照——修改高亮、删除划线、新增绿底、未变灰底;fields 限定字段与显示名,show-equal 切换是否显示未变更字段(默认只看变更)。适合配置变更、档案修改的前后对比。

发布确认 ​

线上版本 -2
本次变更 +3
1-server.port=8080
1server.port=8081
2-db.pool.max=20
2db.pool.max=50
3+db.pool.min=5
3log.level=info
4log.level=info
+0-0不变 0
stats 统计徽标 + 确认弹窗组成发布链路。

代码评审(unified) ​

HEAD~1 -4
工作区 +2
1-export const sum = (list) => {
2- let total = 0
3- for (const n of list) total += n
4- return total
1+export const sum = (list: number[]): number => {
2+ return list.reduce((total, n) => total + n, 0)
5}
单栏 git diff 风格,适合提交记录对比。

Props ​

属性名类型默认值说明
old-valuestring''原文本
new-valuestring''新文本
mode'split' | 'unified' | 'table''split'对比视图:split 左右分栏 / unified 单栏 / table 对象字段级对照
old-titlestring'原始内容'左栏标题
new-titlestring'修改内容'右栏标题
ignore-whitespacebooleanfalse忽略行首尾空白差异

最大高度经 css 变量 --biz-diff-viewer-height(默认 480px)调整。

Events ​

事件名参数说明
——无

Slots ​

插槽名说明
—无插槽

Expose ​

属性/方法说明
rowsdiff 行序列(BizDiffRow[],含类型与行号)
stats{ added, removed, unchanged } 统计

工具函数 diffLines(oldText, newText, ignoreWhitespace) / diffStats(rows) / toSplitRows(rows) 一并从库导出,纯函数可单测或自定义渲染。