跳至內容
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. 保留一切權利。