# DiffLens > 精美酷炫的开源文本差异化对比桌面应用 > Text Diff Desktop App — built with **TypeScript + React + Electron** DiffLens 是一款跨平台桌面文本对比工具,帮助你快速定位两份文件之间的所有差异。它采用暗色科幻视觉风格,提供**行级 + 词级内联高亮**的双栏并排视图与流畅的差异导航,操作简单、开箱即用。 --- ## ✨ 特性 - **双栏并排对比**:左(原文件)右(对比文件)对照,行号清晰对齐 - **行级 + 词级双重高亮**:整行增删一目了然,同一行内的细微改动也能被精确定位 - **虚拟滚动**:仅渲染可见行,数万行大文件滚动依然流畅 - **差异导航**:一键“上一处 / 下一处”在差异之间跳跃,支持 F7 / Shift+F7 快捷键 - **仅看差异**:一键过滤未更改行,连续相同内容折叠为提示行,专注浏览差异 - **交换左右侧**:一键互换两侧内容与视角 - **智能编码识别**:自动探测 UTF-8 / UTF-16 / GBK(含 BOM),中文文档不乱码 - **忽略选项**:支持“忽略行首尾空白”“忽略大小写”“忽略空行”,适配弱差异场景 - **手动粘贴对比**:无需文件,直接粘贴两侧文本即可开始对比 - **大文件防护**:超过 10MB 的文件自动拦截并提示;行数过多时给出耗时预警;超长单行自动跳过词级高亮,避免卡顿 - **二进制文件预警**:疑似二进制内容给出乱码提示,避免误读为差异 - **差异统计徽章**:实时统计新增 / 删除 / 修改行数 - **导出一键报告**:将对比结果导出为 HTML / 纯文本 / Markdown 三种格式(始终包含全量行),便于分享与归档 - **拖拽与按钮双入口**:支持文件拖拽导入,也可通过界面按钮选择文件或粘贴文本 - **滚动联动**:左右两个面板滚动位置自动同步 --- ## 🧰 技术栈 | 层次 | 技术 | | --- | --- | | 语言 | TypeScript | | UI | React 18 | | 桌面壳 | Electron | | 构建 | electron-vite (Vite 5) | | 打包 | electron-builder | | Diff 引擎 | jsdiff(行级 LCS + 词级词法 diff) | | 编码 | iconv-lite | --- ## 🚀 快速开始 ```bash # 安装依赖 npm install # 启动开发模式(打开 Electron 窗口) npm run dev # 类型检查 npm run typecheck # 运行测试(Vitest 单元 + 组件测试) npm test # 生产构建 npm run build ``` ### 打包安装包 ```bash npm run build:win # Windows NSIS 安装包(需在 Windows 上执行) npm run build:mac # macOS DMG npm run build:linux # Linux AppImage / deb ``` --- ## 🏗️ 架构 采用 Electron 经典三进程模型: ``` src/ ├── main/ # 主进程:窗口、菜单、文件读取与编码探测、IPC ├── preload/ # 预加载:contextBridge 安全桥,仅暴露最小 API └── renderer/ # 渲染进程:React 界面与全部 diff 逻辑 ├── diff/ # diff 引擎(行级 + 词级高亮) ├── components/ # 界面组件(DiffView / Toolbar 等) └── styles/ # 全局主题样式 ``` **安全设计**:渲染进程通过 `contextBridge` 隔离,不直接接触 Node 能力;文件读取等系统操作统一收敛在主进程,仅经 IPC 白名单暴露。 --- ## 📦 发布 - 作者:thzxx - 组织:MetonaTeam - 许可证:MIT License(见 [LICENSE](./LICENSE)) - 版本:0.3.2 --- ## 📝 License [MIT](./LICENSE) © 2026 thzxx 团队(MetonaTeam)