# text-diff-viewer **Repository Path**: honlnk/text-diff-viewer ## Basic Information - **Project Name**: text-diff-viewer - **Description**: 纯文本差异对比工具 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-25 - **Last Updated**: 2025-11-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, Vuex ## README # 文本差异对比工具 (Text Diff Viewer)
![Version](https://img.shields.io/badge/version-1.0.0-blue.svg) ![Vue](https://img.shields.io/badge/Vue-3.4+-green.svg) ![TypeScript](https://img.shields.io/badge/TypeScript-5.3+-blue.svg) ![License](https://img.shields.io/badge/license-MIT-green.svg) 一个基于Web的纯文本差异对比工具,专注于精细化文本差异分析,使用diff-match-patch算法实现字符级别的精确差异检测。 [功能特点](#-功能特点) • [快速开始](#-快速开始) • [使用指南](#-使用指南) • [技术架构](#-技术架构) • [开发指南](#-开发指南)
## ✨ 功能特点 ### 🔍 字符级精确差异检测 - 基于diff-match-patch算法,实现字符级别的精确差异分析 - 支持Unicode字符处理,包括中文、Emoji等特殊字符 - 智能识别文本差异类型:新增、删除、修改 ### 🎨 可视化差异展示 - **三色编码系统**: - 🔴 红色背景:删除内容 - 🟢 绿色背景:新增内容 - 🔵 蓝色背景:修改内容 - **多视图模式**: - 对比视图:增删改对比显示 - 原始视图:显示原始文本对比 ### 📁 多种输入方式 - **文件上传**:支持 `.txt`、`.md`、`.csv` 格式 - **直接输入**:大文本框支持,适合长文本内容 - **混合输入**:文件 + 文本组合输入方式 - **文件验证**:格式检查、大小限制(10MB) ### 📊 差异统计分析 - 实时计算相似度百分比 - 统计新增、删除、修改操作数量 - 显示编辑距离和差异数量 ### 🌙 现代化界面 - 响应式设计,支持桌面端和移动端 - 深色/浅色主题切换 - 基于Element Plus的现代化UI组件 - 使用UnoCSS实现原子化样式 ### ⚡ 高性能处理 - 异步处理大文件,避免界面阻塞 - 智能超时控制机制 - 内存优化处理,支持大文本分析 ## 🚀 快速开始 ### 环境要求 - Node.js >= 18.0.0 - pnpm >= 8.0.0(推荐) ### 安装依赖 ```bash # 克隆项目 git clone https://github.com/your-username/text-diff-viewer.git cd text-diff-viewer # 安装依赖 pnpm install ``` ### 开发模式 ```bash # 启动开发服务器 pnpm dev ``` 应用将在 `http://localhost:3000` 启动。 ### 构建部署 ```bash # 构建生产版本 pnpm build # 预览构建结果 pnpm preview ``` ## 📖 使用指南 ### 基本使用流程 1. **输入文本内容** - 点击"上传文件"按钮选择本地文件 - 或直接在文本框中输入/粘贴内容 - 支持左右两侧分别输入不同文本 2. **开始对比** - 点击"开始对比"按钮 - 系统将自动分析文本差异 3. **查看结果** - 在结果页面查看差异可视化结果 - 使用工具栏切换不同视图模式 - 查看详细的统计信息 4. **导出结果** - 点击"导出HTML"按钮保存对比结果 - 导出文件包含完整的样式和差异信息 ### 支持的文件格式 - **文本文件**:`.txt` - **Markdown文件**:`.md` - **CSV文件**:`.csv` - **文件大小限制**:最大 10MB ### 快捷操作 - `Ctrl/Cmd + V`:粘贴文本内容 - `Ctrl/Cmd + Enter`:快速开始对比 - `F11`:全屏模式 ## 🏗️ 技术架构 ### 核心技术栈 - **前端框架**:Vue 3.4+ (Composition API) - **开发语言**:TypeScript 5.3+ - **构建工具**:Vite 5.0+ - **UI框架**:Element Plus 2.4+ - **CSS框架**:UnoCSS 0.58+ - **状态管理**:Pinia 2.1+ - **路由管理**:Vue Router 4.2+ ### 算法引擎 - **diff-match-patch 1.0.5**:Google开源的差异算法库 - **字符级精度**:支持字符、单词、行级别的差异分析 - **性能优化**:时间复杂度 O(N*M),空间复杂度 O(N+M) ### 项目结构 ``` src/ ├── components/ # 可复用组件 │ └── DiffViewer.vue # 差异可视化组件 ├── views/ # 页面组件 │ ├── InputView.vue # 数据输入页面 │ └── ResultView.vue # 结果展示页面 ├── utils/ # 工具函数 │ ├── textProcessor.ts # 文本预处理 │ └── diffAlgorithm.ts # 差异算法封装 ├── stores/ # 状态管理 │ └── diff.ts # 差异数据状态 ├── types/ # 类型定义 │ └── diff.ts # 差异相关类型 ├── router/ # 路由配置 │ └── index.ts # 路由定义 ├── App.vue # 根组件 └── main.ts # 应用入口 ``` ### 核心模块 #### 文本处理器 (textProcessor.ts) ```typescript // 换行符标准化 function normalizeText(text: string): string // 文本预处理 function preprocessText(text: string): string // 文件验证 function validateFile(file: File): boolean ``` #### 差异算法 (diffAlgorithm.ts) ```typescript // 计算文本差异 function calculateDiff(text1: string, text2: string): Promise // 相似度计算 function calculateSimilarity(diffs: DiffRecord[]): number // 统计分析 function generateStats(diffs: DiffRecord[]): DiffStats ``` #### 差异可视化 (DiffViewer.vue) - 三色编码渲染 - 响应式布局 - 交互式界面 ## 🛠️ 开发指南 ### 代码规范 - 使用ESLint + Prettier进行代码格式化 - 遵循Vue 3 Composition API最佳实践 - TypeScript严格模式,类型安全优先 - 提交信息遵循Conventional Commits规范 ### 开发命令 ```bash # 代码格式化 pnpm format # 代码检查 pnpm lint # 类型检查 pnpm build # 开发服务器 pnpm dev ``` ### 组件开发规范 - 使用 `