跳到正文
CDGet
  • 首页
  • 项目
  1. 首页
  2. 全部项目
  3. Diffine

Diffine

库

把文本与图片的比较引擎和左右对照的视图做进同一个库,同时以 React 库和 Flutter 包提供。先按行把两个版本对上,再在改动过的行里对到词,两张图片则逐像素比较,绘制时把两边保持在同一高度,比较和对齐都不必自己写。

主页 (在新标签页中打开)文档 (在新标签页中打开)源代码 (在新标签页中打开)

关于这个项目

Diffine 找出两个版本之间改了什么,并把结果画到屏幕上,文本和图片都可以,React 和 Flutter 都能用。比较与视图是同一个库,而不是在差异包上面再架一个查看器,两半相接的地方是一个值:diffText 返回行、改动和计数,diffImage 返回一张遮罩、以矩形表示的改动区域和计数,两者里面都没有任何组件或 widget。视图只是这个值的一个使用者,而不是通往它的唯一路径,所以同一份比较结果可以打印到终端、放到 worker 里运行,或者在构建中拿去和阈值比对。unified 格式的补丁也是一份比较结果:parsePatch 把补丁读成同一种值,formatPatch 再把它写回补丁。

文本的对齐在一次遍历里分两层完成。先把行两两配对,再在被改动而非被替换的一对里,标出真正移动过的词或字。视图把结果画在保持同高的两块面板上,中间的空隙用连线接起来;行号、折行、对齐、连线、合并为一栏的排布,以及把没人改过的行折叠起来,视图的每一部分都是带默认值的设置。编辑器模式会在每块面板上叠一个输入框,每敲一个键就重新算一遍比较。图片可以并排比较、半透明地叠在一起、用一条分界线扫过去对照,或者只看遮罩,还能设定容差、忽略渲染器留下的平滑差异,并为没有对齐的两张图找出偏移;diffImages 一次比较三张或更多,imageSimilarity 则用一个数字作答。不用鼠标也读得下来:两块面板都是能获得焦点的区域,在改动之间来回跳的按钮都有名字,改了什么会在变化时读出来。

在 Web 上,安装就是一个包加一行 CSS;在 Flutter 里,只需一条 import。每个包都只有一个依赖:React 包带上 highlight.js 做语法高亮,各语言的语法定义通过动态导入逐个加载,所以纯文本比较一点也不会下载;Flutter 包带上 characters,而它本来就随 Flutter 附带。react 和 react-dom 是同级依赖,用的是应用里已有的那份。两个包共用同一个引擎和同一套配色,连颜色值都一样,深色配色跟随系统设置。React 包是 ESM,带 TypeScript 类型声明,根入口只有引擎,视图放在 diffine-react/text-diff 和 diffine-react/image-diff 下,只需要比较结果的应用不会把视图一并拉进来。

功能

  • 文档站点

  • TypeScript 类型

  • 多语言支持

  • 经测试验证

  • 跨平台支持

  • 内置无障碍支持

  • 深色模式

  • 支持摇树优化

项目信息

起始
2026
许可证
MIT (在新标签页中打开)
编程语言
DartJavaScript
标签
diffdiff-viewertext-diffimage-diffreactflutter
软件包
diffine-react (在新标签页中打开)npmdiffine (在新标签页中打开)pub.dev
热度
3
GitHub 星标
83
npm 下载量
数据点:30 个。范围:0 至 24。
Diffine — npm 下载量, 最近 30 天
npm 下载量
9月23日24
9月24日2
9月25日0
9月26日0
9月27日7
9月28日1
9月29日3
9月30日1
10月1日2
10月2日1
10月3日0
10月4日1
10月5日2
10月6日0
10月7日3
10月8日4
10月9日5
10月10日1
10月11日5
10月12日3
10月13日0
10月14日0
10月15日0
10月16日13
10月17日0
10月18日3
10月19日0
10月20日0
10月21日0
10月22日2
最近 30 天
联系我们赞助
这里列出的项目均以 MIT 许可证开源。© 2026 CDGet. 保留所有权利。