# ParseTool **Repository Path**: xiaomao12/parse-tool ## Basic Information - **Project Name**: ParseTool - **Description**: 解析工具 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-06 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ParseTool — 数据解析工具箱 > 免费开源的**纯前端在线工具箱**:**13 大类 · 174 个工具**,覆盖数据解析、格式互转、编码转换、加密哈希、生成器、开发辅助、网络计算、图片处理、文档处理与生活计算。 > 所有计算在浏览器本地完成,**数据不上传任何服务器**;支持 PWA 离线安装,构建产物为纯静态文件,静态托管即开即用。 ![React](https://img.shields.io/badge/React-18-61dafb) ![Vite](https://img.shields.io/badge/Vite-5-646cff) ![TypeScript](https://img.shields.io/badge/TypeScript-5.6-3178c6) ![Tools](https://img.shields.io/badge/Tools-174-3fb950) ![PWA](https://img.shields.io/badge/PWA-离线可用-5a0fc8) ![License](https://img.shields.io/badge/License-MIT-green) --- ## 目录 - [一、这个项目是做什么的](#一这个项目是做什么的) - [二、核心特性](#二核心特性) - [三、快速开始](#三快速开始) - [四、部署](#四部署) - [五、技术栈](#五技术栈) - [六、架构设计](#六架构设计) - [七、功能总览(13 类 · 174 个工具)](#七功能总览13-类--174-个工具) - [八、使用技巧与快捷键](#八使用技巧与快捷键) - [九、项目结构](#九项目结构) - [十、如何新增一个工具](#十如何新增一个工具) - [十一、浏览器兼容性与已知限制](#十一浏览器兼容性与已知限制) - [十二、常见问题 FAQ](#十二常见问题-faq) - [十三、贡献与许可](#十三贡献与许可) --- ## 一、这个项目是做什么的 ### 定位 ParseTool 是一个**「瑞士军刀」式的网页工具箱**,把开发调试与日常办公中最常用的零散小工具收进同一个页面:**打开即用、不用注册、不上传数据、可离线**。 ### 解决什么问题 | 痛点 | 传统做法 | ParseTool 的做法 | | --- | --- | --- | | 在线工具站要把 JSON / 密钥 / 合同文件传到别人服务器 | 有泄露风险,敏感数据不敢用 | 全部在浏览器本地计算,代码里没有任何上传接口 | | 工具散落在几十个网站,书签一堆还经常失效 | 每次现搜,广告满屏 | 174 个工具一页聚合,本地搜索秒开 | | 装一堆单机软件(编码转换、二维码、PDF、图片压缩…) | 占用空间、要更新、跨平台不一致 | 一个网页全搞定,PWA 装到桌面即可离线用 | | 自建工具要买服务器、配后端和数据库 | 有运维成本和持续费用 | 纯静态文件,丢到对象存储 / GitHub Pages 即可,零后端 | ### 适合谁用 | 人群 | 典型使用场景 | | --- | --- | | 后端 / 前端开发者 | JSON·XML·YAML·TOML·CSV 解析互转、时间戳换算、Base64/URL 编码、AES/RSA/国密加解密、哈希与 HMAC 签名、正则测试、Cron 解析、JWT 解析与生成、Docker run 转 Compose | | 测试工程师 | 测试数据/随机姓名/IMEI/UUID 批量生成、HTTP 请求调试、WebSocket 调试、JSON 转 TS 与 JSON Schema | | 运维 / 网络工程师 | IPv4 子网计算、IP 与 IPv6 解析、DNS(DoH) 查询、Nginx 访问日志分析、Chmod 权限计算、端口速查 | | 产品经理 / 运营 / 办公族 | 图片压缩与格式转换、二维码(含 Wi-Fi / 名片)、证件照换底色、九宫格切图、Excel/PDF 解析、房贷与个税计算、汇率、农历公历 | --- ## 二、核心特性 ### 🔒 隐私优先:数据不出本机 所有解析、转换、加密、文件与图片处理都在浏览器内完成,**没有任何后端接口接收你的数据**。 只有 **4 个查询类工具**按需要访问公共服务(页面内已明确标注),且只发送查询关键字,不发送你的输入内容: | 工具 | 访问的服务 | 说明 | | --- | --- | --- | | 汇率换算 | 免费汇率开放接口 | 联网获取实时汇率 | | 天气预报 | open-meteo | 联网获取天气数据 | | 域名 DNS 查询 | DNS over HTTPS(Cloudflare / Google) | 查询 A/AAAA/MX/TXT 记录 | | IP 归属地查询 | ipwho.is | 查询 IP 归属地与本机公网 IP | ### ⚡ 按需加载,首屏轻快 - **路由级懒加载**:119 个视图组件全部 `React.lazy`,只有打开对应工具时才下载 - **第三方库手动分包**:`vendor-react` / `vendor-crypto` / `vendor-parsers` / `vendor-tools` - **重型库动态 import**:pdf-lib、pdfjs-dist、SheetJS、mermaid、js-beautify、opencc-js、pinyin-pro、exifr 等只在首次使用时加载 - **实测体积**:首屏(入口 + 4 个 vendor 包 + CSS)约 **301 KB(gzip)**;全部 92 个 JS/CSS 合计约 **2.4 MB(gzip,不含 `pdf.worker.min.mjs`)**,`dist/` 未压缩约 8.7 MB ### 🧭 找工具够快 - 顶栏全局搜索,支持**中文名称 / 描述 / 分类名 / 英文别名 / 拼音全拼 / 拼音首字母** - 例:`sjc`(时间戳)、`erweima`(二维码)、`qr`、`password`、`jsonpath` - 结果按相关度排序并高亮命中片段(评分:名称 > 别名 > 分类 > 拼音 > 描述) - 下拉面板显示「N 个结果 · ↑↓ 选择 · 回车打开」,无结果时给出 `sjc / erweima / qr / json / ip` 引导 - 侧栏收藏、最近使用(上限 8 条,可一键清空)、分类分组可折叠 - 首页 13 色分类卡片 + 分类锚点 chips(点击平滑滚动定位),卡片右上角可直接点星收藏 - 搜索时首页自动隐藏收藏/最近使用区块,只显示匹配结果 ### 🎨 好用细节 - **5 套主题**:深色·经典黑 / 浅色·明亮 / 深色·深海蓝 / 深色·暗夜紫 / 深色·墨绿,首次访问自动跟随系统 - **一键明暗切换**:顶栏 ☀️/🌙 按钮,且会记住你上次用的深色主题,从浅色切回时自动恢复(不会掉回默认黑) - **侧栏可折叠、可拖拽调宽**(范围 180–480px,默认 232px),宽度与状态本地记忆 - **面包屑导航**:工具页顶部 `首页 / 分类名 / 工具名`,右侧带收藏星标与返回首页 - **上一工具 / 下一工具**:面包屑左侧可线性翻页,到首尾自动禁用 - **回到顶部**:内容区滚动超过 400px 出现,平滑滚动回顶 - **浏览器标签页标题跟随工具名**(`{工具名} | ParseTool`),多标签与书签好识别 - **首页 Hero 统计条**:实时显示分类数、工具数与「全部本地运行」标识 - **顶栏工具总数**:由注册表自动算出,新增工具后无需手改 - **Hash 路由**:每个工具有独立链接(`#/tool/xxx`),刷新、分享、前进后退均保持 - **设置导入/导出**:页脚的「导出设置 / 导入设置」,收藏、最近使用、主题、侧栏状态一键备份迁移 - **PWA 可安装**:生产环境注册 Service Worker,装到桌面后离线可用(详见下方离线策略) - **错误边界**:单个工具崩溃不会白屏,提供「重试」与「返回首页」两个按钮 #### 离线策略(Service Worker) | 环节 | 策略 | | --- | --- | | 注册条件 | 仅生产环境(`import.meta.env.PROD`) | | 缓存名 | `parsetool-v2`,升级后自动清理旧版本缓存 | | 预缓存 | `/`、`/index.html`、`/manifest.webmanifest`、`/icon.svg` | | 拦截范围 | 只处理**同源 GET** 请求,其余直接放行 | | 页面导航 | network-first:联网时拿最新 `index.html`,离线回落缓存(发新版即时生效) | | 静态资源 | 缓存优先,失败回落 `/` | | 生效时机 | `skipWaiting` + `clients.claim`,无需关闭所有标签页 | --- ## 三、快速开始 ### 环境要求 | 依赖 | 版本 | | --- | --- | | Node.js | **18+**(推荐 20 LTS,Vite 5 要求 ≥18) | | 包管理器 | npm / pnpm / yarn 均可 | ### 命令 ```bash npm install # 安装依赖 npm run dev # 开发模式 → http://localhost:5173 npm run build # 生产构建(类型检查 tsc -b + 打包,输出 dist/) npm run preview # 本地预览生产构建 ``` > 打包路径存放:/tool/dist/ > 开发服务器已在 `vite.config.ts` 中开启 `watch.usePolling`(轮询间隔 `interval: 300`),避免 Windows 下文件监听失效导致热更新不生效。 > > `npm run build` 会先执行 `tsc -b` 做全量类型检查,类型报错会直接中断构建。 --- ## 四、部署 构建产物 `dist/` 是**纯静态文件**,任意静态服务器 / 对象存储 / CDN 都可托管,无需 Node 运行时。 ```bash npm run build # 产物输出到 dist/ ``` ### 部署到网站根目录 把 `dist/` 内所有文件上传到站点根目录即可。 ### 部署到子路径(如 GitHub Pages 的 `/parse-tool/`) 在 `vite.config.ts` 中设置 `base`: ```ts export default defineConfig({ base: '/parse-tool/', // 与仓库名保持一致 // ... }) ``` > 项目使用 Hash 路由(`#/tool/xxx`),因此**不需要**在 Nginx 配置 `try_files` 重写,子路径部署也不会出现刷新 404。 > 注意 Service Worker 注册的是绝对路径 `/sw.js`,若部署在子路径下需同步改为 `./sw.js` 或 `${base}sw.js`。 ### Nginx 示例 ```nginx server { listen 80; server_name tool.example.com; root /var/www/parsetool; index index.html; # 静态资源长缓存(文件名带 hash,可放心缓存) location /assets/ { expires 30d; add_header Cache-Control "public, immutable"; } # index.html 与 sw.js 禁用缓存,保证发版即时生效 location = /index.html { add_header Cache-Control "no-cache"; } location = /sw.js { add_header Cache-Control "no-cache"; } gzip on; gzip_types text/css application/javascript application/json image/svg+xml; } ``` --- ## 五、技术栈 | 技术 | 版本 | 用途 | | --- | --- | --- | | Vite | 5 | 构建工具、开发服务器、分包策略 | | React | 18 | UI 框架(`lazy` + `Suspense` 路由级懒加载) | | TypeScript | 5.6 | 严格模式类型约束 | | fast-xml-parser | 4 | XML 解析与构建 | | js-yaml | 4 | YAML 解析与序列化 | | smol-toml | 1 | TOML 解析与序列化 | | papaparse | 5 | CSV 解析与生成 | | crypto-js | 4 | AES/DES/3DES/RC4/Rabbit、MD5/SHA 家族、HMAC | | bcryptjs | 3 | Bcrypt 哈希生成与校验 | | sm-crypto | 0.5 | 国密 SM2 / SM3 / SM4 | | Web Crypto API | 原生 | RSA-OAEP 密钥与加解密、AES-256-GCM 文件加密、PBKDF2 密钥派生 | | qrcode · jsQR · JsBarcode | - | 二维码生成 / 识别、条形码生成 | | pdfjs-dist · pdf-lib | 4 / 1 | PDF 文字提取、PDF 合并与拆分(懒加载) | | xlsx (SheetJS) | 0.18 | Excel/CSV 解析(懒加载) | | mermaid | 11 | 流程图 / 时序图 / 甘特图渲染(懒加载) | | js-beautify · sql-formatter | - | JS 代码美化、SQL 格式化 | | marked · turndown | - | Markdown 渲染、HTML 转 Markdown | | opencc-js · pinyin-pro · exifr | - | 简繁转换(懒加载)、拼音、EXIF 读取(懒加载) | | 浏览器原生 API | - | CompressionStream(Gzip)、EyeDropper(屏幕取色)、Web Speech(朗读)、Clipboard、Intl(时区)、Web Audio(蜂鸣)、Canvas(图像全家桶)、WebSocket、FileReader、DataView | --- ## 六、架构设计 ### 1. 注册表驱动(核心设计) 所有工具在 `src/tools.ts` 中声明式注册,`App.tsx` 只负责按 `kind` 渲染,**新增工具绝大多数情况不需要改动路由和外壳代码**。 ```ts export interface Tool { id: string // 唯一 ID,也是路由 #/tool/{id} name: string // 工具名称 desc: string // 一句话描述(参与搜索) icon: string // 图标字符 kind: ToolKind // 决定主区域渲染哪种视图 parse?: ParseFn // converter 类型:左侧输入解析函数 stringify?: StringifyFn // converter 类型:右侧输出序列化函数 formats?: [string, string] // 双栏两端格式名,如 ['JSON', 'YAML'] tableView?: boolean // CSV 等表格视图 modes?: { name: string; fn: (text: string) => string | Promise }[] defaultMode?: number sample: string // 示例数据,一键填充 } ``` ### 2. 两种通用视图 + 定制视图 | 类型 | 复用视图 | 适用场景 | 接入成本 | | --- | --- | --- | --- | | `converter` | `ConverterView`(双栏互转) | JSON/XML/YAML/TOML/CSV/ENV 之间的解析与互转 | 提供 `parse` + `stringify` + `formats` 即可 | | `transform` | `TransformView`(双栏 + 模式按钮) | 纯文本 → 纯文本的编码/转换 | 提供 `modes` 数组即可 | | 其他 119 种 `kind` | `views/*.tsx` 定制组件 | 有交互、有参数、有结果的复杂工具 | 编写组件并注册 | ### 3. 懒加载与分包 ``` 入口 index.js (47 KB gzip) ── 静态依赖 ── vendor-react / vendor-parsers / vendor-crypto / vendor-tools └─ React.lazy ── 15 个视图 chunk(按工具打开时下载) └─ 重型库动态 import:pdf-lib / pdfjs / xlsx / mermaid / opencc / exifr / js-beautify / pinyin-pro ``` ### 4. 状态持久化(localStorage) | Key | 内容 | | --- | --- | | `parsetool-theme` | 当前主题(dark / light / navy / purple / forest) | | `parsetool-favs` | 收藏的工具 ID | | `parsetool-recent` | 最近使用的工具 ID | | `parsetool-collapsed` | 侧栏各分组的折叠状态 | | `parsetool-sidebar-width` | 侧栏宽度(默认 232px) | | `parsetool-sidebar-open` | 侧栏是否展开 | ### 5. 路由 Hash 路由,格式 `#/tool/{toolId}`,监听 `hashchange` 实现浏览器前进/后退,无需服务端配合。 --- ## 七、功能总览(13 类 · 174 个工具) > 下表逐个列出全部 174 个工具。**标注「联网」的 4 个是唯一会访问外部服务的工具**,其余全部本地计算。 ### 数据解析(7 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | JSON 格式化/校验 | 解析并校验 JSON 数据,支持压缩与格式化美化输出 | 原生 JSON + 自研格式化器 | | XML 解析器 | 解析并校验 XML 数据,转换为结构化对象并格式化输出 | fast-xml-parser | | YAML 解析器 | 解析并校验 YAML 数据,常用于配置文件的检查与美化 | js-yaml | | TOML 解析器 | 解析并校验 TOML 数据,适用于 Cargo/pyproject 等配置 | smol-toml | | CSV 解析器 | 解析 CSV 数据为表格与 JSON,自动识别表头与类型 | papaparse | | .env/Properties 解析 | 解析 .env / properties 配置文件为 JSON(支持注释与引号),可反向导出 | 自研解析器(注释/引号兼容) | | 身份证号码解析 | 解析身份证号码结构(地区/生日/性别)并校验位验证,开发调试用 | 自研校验位算法(GB 11643) | ### 格式互转(12 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | JSON 转 XML | 将 JSON 数据转换为 XML 格式 | fast-xml-parser 构建 | | XML 转 JSON | 将 XML 数据转换为 JSON 格式 | fast-xml-parser 解析 | | JSON 转 YAML | 将 JSON 数据转换为 YAML 格式 | js-yaml | | YAML 转 JSON | 将 YAML 数据转换为 JSON 格式 | js-yaml | | JSON 转 TOML | 将 JSON 数据转换为 TOML 配置格式 | smol-toml | | TOML 转 JSON | 将 TOML 配置转换为 JSON 格式 | smol-toml | | YAML 转 TOML | 将 YAML 配置转换为 TOML 格式 | js-yaml + smol-toml | | TOML 转 YAML | 将 TOML 配置转换为 YAML 格式 | smol-toml + js-yaml | | YAML 转 XML | 将 YAML 数据转换为 XML 格式 | js-yaml + fast-xml-parser | | XML 转 YAML | 将 XML 数据转换为 YAML 配置格式 | fast-xml-parser + js-yaml | | JSON 转 CSV | 将 JSON 对象数组转换为 CSV 表格 | papaparse | | CSV 转 JSON | 将 CSV 表格数据转换为 JSON 数组 | papaparse | ### 编码转换(24 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | Gzip 压缩/解压 | 文本 Gzip 压缩为 Base64 或反向解压(浏览器原生流式 API) | 浏览器原生 CompressionStream | | URL 编码/解码 | URL 百分号编码与解码(UTF-8),常用于查询参数处理 | 原生 encodeURIComponent | | Base64 编码/解码 | Base64 与文本互相转换,支持中文(UTF-8)与 URL-Safe 变体 | 自研编解码(Unicode 安全) | | HTML 实体编码/解码 | HTML 实体(& < 等)与原文互相转换 | 自研实体映射表 | | 文本↔二进制 | 文本与二进制(8 位比特串)互相转换 | 自研位级转换 | | Unicode 转换 | 文本与 \\uXXXX Unicode 转义序列互相转换 | 自研码点转换 | | 大小写/命名转换 | camelCase / PascalCase / snake_case / kebab-case 等命名风格互转 | 自研命名风格转换 | | 罗马数字转换 | 阿拉伯数字与罗马数字互相转换(自动识别方向) | 自研罗马数字算法 | | 数字进制转换 | 2-36 进制数字互相转换,支持超大整数 | BigInt 任意进制 | | 日期时间转换 | Unix 时间戳与日期时间互相转换,支持秒/毫秒 | 原生 Date / Intl | | 颜色转换 | HEX / RGB / HSL / CMYK 颜色格式互相转换并预览 | 自研色彩空间换算 | | 图片 ↔ Base64 | 图片转 Base64 Data URI,或将 Base64 还原为图片下载 | FileReader / Canvas | | 文件 ↔ Base64 | 任意文件转 Base64 / Data URI,或将 Base64 解码还原为文件下载 | FileReader | | Base32 编码/解码 | 文本与 Base32(RFC 4648)互相转换,TOTP 密钥常用格式 | 自研 Base32 编解码 | | Excel 列号转换 | Excel 列字母(A/B/.../AA)与数字序号互相转换 | 自研进制映射 | | JSONL ↔ JSON | JSON Lines(每行一个 JSON)与标准 JSON 数组互相转换 | 逐行 JSON 解析 | | GTIN 条码校验 | 校验 EAN-8 / UPC-12 / EAN-13 / GTIN-14 条码校验位 | 自研 Luhn/GTIN 校验 | | IPv6 展开/压缩 | IPv6 地址完整展开与 RFC 5952 规范压缩,自动处理内嵌 IPv4 | 自研展开/压缩算法 | | MAC 地址解析 | 识别 MAC 地址格式并互相转换,判断单播/组播与本地/全球管理位 | 自研格式解析 | | Query String ↔ JSON | URL 查询字符串与 JSON 互相转换(自动处理 URL 编码与重复键) | URLSearchParams | | IPv4 ↔ 整数 | IPv4 地址与整数/十六进制互相转换(常用于 IP 库存储) | 自研位运算 | | 全角/半角转换 | 全角字符与半角字符互相转换(中英文混排排版处理) | 自研全半角映射 | | 千分位格式化 | 数字添加/去除千分位分隔符 | 自研正则分组 | | JSON 转义/反转义 | 文本与 JSON 转义序列(\n \" \\uXXXX)互相转换 | 原生 JSON 转义 | ### Web 解析(8 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | URL 解析器 | 解析 URL 的协议、域名、路径、查询参数等各部分 | URL API | | JWT 解析器 | 解码 JWT Token 的 Header 与 Payload(不验证签名),并显示过期时间 | 自研 Base64URL 解码 | | User-Agent 分析 | 解析 User-Agent 中的浏览器、内核、操作系统与设备信息 | 正则特征库 | | Cookie 解析器 | 解析 Cookie 字符串为键值表,可读取当前页面 Cookie | 自研键值解析 | | HTTP 请求头速查 | 常用 HTTP 请求/响应头含义速查,支持搜索 | 自研数据表 | | Basic Auth 生成 | 用户名:密码 与 Basic 认证头互相转换(Base64) | Base64 + URL 解析 | | 设备信息 | 查看屏幕/CPU/内存/语言/时区等本地设备信息 | Navigator / Screen API | | MIME 类型查询 | 常用文件扩展名与 MIME 类型对照表,支持搜索 | 自研数据表 | ### 加密与哈希(13 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | 哈希计算器 | 计算文本或文件的 MD5 / SHA-1 / SHA-256 / SHA-512 哈希值 | crypto-js + FileReader | | TOTP 动态口令 | 生成 2FA 动态口令(RFC 6238),粘贴 Base32 密钥即可 | 自研 TOTP(HMAC-SHA1) | | Bcrypt 哈希 | Bcrypt 哈希生成与校验(可调轮数),用于密码存储 | bcryptjs | | 密码强度分析 | 评估密码强度:熵值、暴力破解耗时与改进建议 | 自研评分规则 | | RSA 密钥对生成 | 本地生成 RSA-OAEP 公私钥对(2048-4096 位),导出 PEM 格式 | Web Crypto API | | RSA 加密/解密 | 使用 PEM 公钥加密 / 私钥解密文本(RSA-OAEP SHA-256) | Web Crypto API | | HMAC 生成器 | 基于密钥计算 HMAC-MD5 / HMAC-SHA 签名,用于接口签名验证 | crypto-js HMAC | | 文本加密/解密 | AES/DES/3DES/RC4/Rabbit,ECB/CBC/CTR 等模式与填充、密钥格式可调 | crypto-js | | 文件加密/解密 | 任意文件 AES-256-GCM 认证加密,密码错误自动校验,本地处理 | Web Crypto(AES-256-GCM + PBKDF2 25 万次迭代) | | JWT 生成器 | 生成 HS256 签名的 JWT Token(开发测试用) | 自研 HMAC-SHA256 签名 | | UUID 生成器 | 批量生成 UUID **v4 / v7 / ULID** 三种(基于密码学安全随机数) | crypto.getRandomValues(CSPRNG) | | CRC32/校验和 | CRC32 与 Adler-32 校验和计算(UTF-8 字节,十六进制输出) | 自研 CRC32 查表 / Adler-32 | | 国密 SM3/SM4 | SM3 摘要与 SM4 分组加解密(ECB/CBC,pkcs#7),纯本地实现 | sm-crypto | ### 生成器(7 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | 密码生成器 | 批量生成密码学安全的随机密码,字符集与长度可调 | crypto.getRandomValues(CSPRNG) | | 令牌生成器 | 生成随机 API Token(HEX / Base64 / Base62),16-64 字节 | crypto.getRandomValues(CSPRNG) | | 随机数生成器 | 指定范围内批量生成随机整数或小数,支持去重与排序 | crypto.getRandomValues(CSPRNG) | | IMEI 生成器 | 批量生成格式合法的随机 IMEI(Luhn 校验位正确),测试用 | 自研 Luhn 校验位 | | 随机打乱/抽取 | 名单随机打乱排序或抽取 N 条,可用于点名/抽奖 | Fisher–Yates 洗牌算法 | | 测试数据生成器 | 按字段定义批量生成 JSON 测试数据(姓名/手机/邮箱/地址等),可下载 | 自研字段规则引擎 | | 随机姓名生成 | 批量生成常见组合的中文姓名,用于测试数据填充 | 自研词库组合 | ### 开发工具(28 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | 正则表达式测试 | 实时测试正则表达式,高亮匹配位置与捕获组 | 原生 RegExp | | 常用正则速查 | 邮箱/手机号/身份证/URL 等常用正则模板,一键复制 | 自研速查数据表 | | CSS 效果生成器 | 可视化生成渐变背景与盒阴影 CSS,实时预览一键复制 | CSS 效果代码生成 | | SQL 美化 | SQL 语句格式化与压缩,支持 MySQL / PostgreSQL 等多种方言 | sql-formatter | | Markdown 语法速查 | 常用 Markdown 语法写法与实时渲染效果对照,一键复制 | 自研速查数据表 | | Git/命令行速查 | Git/Shell/npm/Docker 常用命令速查表,支持搜索与复制 | 自研速查数据表 | | Markdown 预览 | Markdown 实时渲染预览,支持导出 HTML | marked | | JSON 转 TypeScript | 根据 JSON 数据自动生成 TypeScript 接口定义(支持嵌套与数组) | 自研类型推断 | | JSON Path 提取 | 按路径($.a.b[0]、通配 *)从 JSON 中提取指定数据 | 自研路径求值器 | | HTML 格式化/压缩 | HTML 代码美化缩进与压缩(基础语法) | 自研格式化 | | CSS 美化/压缩 | CSS 样式表格式化与压缩(基础语法,不含预处理器) | 自研美化/压缩 | | HTML 实时预览 | 在沙箱 iframe 中预览 HTML 片段的渲染效果 | iframe 沙箱 | | Cron 表达式解析 | 解析 Cron 表达式含义并计算未来执行时间 | 自研 Cron 解析器 | | Chmod 计算器 | 可视化计算 Linux 文件权限(数字 755 ↔ 符号 rwxr-xr-x) | 自研八进制/符号换算 | | 按键码查询 | 按下任意键查看 event.key / code / keyCode 等编码 | KeyboardEvent | | Docker run 转 Compose | 将 docker run 命令转换为 docker-compose.yml | shlex 分词 + YAML 生成 | | HTTP 请求测试 | 发送 GET/POST 等请求并查看响应(目标接口需支持 CORS) | fetch API | | CSS 单位转换 | px / rem / em / vw / vh / pt 之间互相换算 | 自研换算 | | HTTP 状态码速查 | 常用 HTTP 状态码含义速查表,支持搜索 | 自研数据表 | | 条形码生成 | 生成 CODE128 / EAN-13 / UPC / CODE39 条形码,下载 SVG | JsBarcode | | 颜色对比度检查 | 检查前景/背景对比度是否满足 WCAG AA/AAA 无障碍标准 | WCAG 相对亮度公式 | | 配色方案生成 | 由基准色生成互补/类似/三角/明暗梯度配色,点击复制色值 | 自研色彩理论算法 | | 屏幕取色器 | 吸取屏幕任意位置颜色(EyeDropper API,Chrome/Edge) | EyeDropper API | | JSON 转 Schema | 由 JSON 示例生成 JSON Schema(draft-07,含类型/必填/格式推断) | 自研 draft-07 Schema 生成器 | | IEEE 754 浮点转换 | 浮点数与 32/64 位 HEX、二进制位互转,分解符号/指数/尾数 | DataView(IEEE 754 位分解) | | LICENSE 生成器 | MIT/ISC/BSD/Unlicense/0BSD 许可证全文一键生成 | 自研许可证模板 | | JS 代码美化 | JavaScript 代码格式化(缩进/换行规范化) | js-beautify(动态 import) | | Mermaid 流程图 | Mermaid 语法渲染流程图/时序图/甘特图,导出 SVG/PNG | mermaid(懒加载) | ### 文本工具(22 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | 文本对比 | 逐行对比两段文本的差异(新增/删除高亮),支持忽略大小写与空白 | 自研 LCS 差异算法 | | 文本清理 | 批量清理文本行:去空白/去空行/去重/排序/去行号 | 自研行处理 | | 文本查找替换 | 批量查找替换文本,支持正则与忽略大小写 | 原生 replace + 正则 | | 简繁中文转换 | 简体与繁体互相转换(OpenCC 词级,支持台湾/香港用词) | opencc-js(懒加载) | | HTML 转 Markdown | 将 HTML 片段转换为 Markdown 文本 | turndown | | 数字转中文大写 | 金额数字转人民币中文大写(壹贰叁...),支持两位小数 | 自研中文数字算法 | | 银行卡号校验 | Luhn 算法校验银行卡号并识别卡组织(Visa/银联/万事达等) | 自研 Luhn 校验 | | Emoji 速查 | 常用 Emoji 表情搜索与一键复制 | 自研数据表 | | 文字转语音 | 浏览器本地语音合成,可选发音人/语速/音调 | Web Speech API | | 摩尔斯电码转换 | 文本与摩尔斯电码互相转换(字母/数字/常用标点) | 自研摩斯码表 | | NATO 音标字母 | 文本与 NATO 音标字母表互转(Alfa Bravo Charlie...) | 自研音标表 | | ASCII 转换器 | 文本与 ASCII 码(十进制/十六进制)互相转换 | 自研码表转换 | | 汉字转拼音 | 汉字转全拼/首字母/带声调拼音 | pinyin-pro(懒加载) | | URL Slug 生成 | 标题转 URL 友好的 slug(中文自动转拼音,小写连字符) | pinyin-pro + Slug 化 | | 零宽字符检测 | 检测并清理复制文本中混入的零宽字符(反爬/隐写常见) | 自研零宽字符检测 | | 文本提取器 | 从文本批量提取邮箱/URL/手机号/IP(自动去重) | 正则提取 + 去重 | | HTML 剥离标签 | 去除 HTML 标签提取纯文本(自动处理换行与实体) | 自研剥离 | | 字数统计 | 统计字符数、汉字数、单词数、行数与 UTF-8 字节数 | 自研统计 | | Lorem Ipsum 假文生成 | 生成拉丁文/中文占位假文,用于排版与设计填充 | 自研词库 | | 中英标点互转 | 中文标点与英文标点互相转换(引号智能配对) | 自研标点映射 | | Markdown 表格生成 | CSV / TSV 转 Markdown 表格(自动识别分隔符、转义竖线) | papaparse + Markdown 转义 | | 花式字体 | 文字转 12 种 Unicode 花体(粗体/斜体/手写/哥特/空心/等宽等) | Unicode 数学字母映射表 | ### 网络工具(8 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | IPv4 子网计算器 | 根据 IP 与 CIDR/掩码计算网络地址、广播地址与可用主机范围 | 自研位运算 | | IP 地址解析 | 解析 IPv4 的分类/私有属性/整数与二进制表示 | 自研解析 | | IP 归属地查询 | 查询 IP 的国家/城市/运营商归属地,支持查询本机公网 IP | ipwho.is(**联网**) | | 域名 DNS 查询 | 通过 DoH 查询 A/AAAA/MX/TXT 等 DNS 记录 | DoH(Cloudflare/Google,**联网**) | | 域名结构解析 | 拆分域名子域/主域/TLD,支持中文域名 Punycode 互转 | 自研域名结构解析 | | WebSocket 调试 | 连接 WS 服务器收发消息,实时日志调试 | WebSocket API | | 常用端口速查 | 常用网络端口与用途对照表,支持搜索 | 自研数据表 | | Nginx 日志解析 | 解析 combined 访问日志:UV/流量/状态码分布/Top IP 与明细表 | 正则解析 + 统计聚合 | ### 计算与测量(12 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | 科学计算器 | 四则运算、幂、取余与常用数学函数的本地表达式计算器 | 自研表达式解析(白名单安全求值) | | 温度转换器 | 摄氏 / 华氏 / 开尔文 / 兰氏度互相换算 | 自研温度公式 | | 单位换算器 | 长度/重量/面积/速度/数据大小/时间六大类单位互相换算 | 自研单位系数表 | | 位运算计算器 | AND/OR/XOR/NOT/位移位运算,附 32 位二进制对照 | 自研位运算演示 | | 统计计算器 | 均值/中位数/众数/方差/标准差等一键统计 | 自研统计公式 | | 百分比计算器 | 求百分比、占比、增减变化率三类常用计算 | 自研公式 | | 秒表计时器 | 精确到百分之一秒的秒表,支持计次 | 高精度时间戳计时 | | 倒计时 | 自定义时长的倒计时,结束蜂鸣提醒 | 定时器 + Web Audio | | 质数工具 | 质数判断、质因数分解与区间质数生成 | 自研试除法/区间筛选 | | 欧姆定律计算 | 电压 / 电流 / 电阻已知任意两项求第三项,附功率计算 | 欧姆定律公式 | | 时区转换器 | 指定时间在任意两个时区间的对应时间(自动处理夏令时) | Intl 时区(夏令时两次逼近) | | 番茄钟 | 专注/休息循环计时,阶段切换蜂鸣提醒,统计完成番茄数 | 定时器 + Web Audio 蜂鸣 | ### 图片工具(15 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | 图片压缩 | 本地压缩图片(质量/尺寸/格式可调),文件不上传服务器 | Canvas API | | 图片格式转换 | PNG / JPEG / WebP 互相转换,透明通道可铺底色 | Canvas API | | 二维码生成 | 文本/链接/Wi-Fi/名片 vCard 生成二维码,多尺寸下载 | qrcode(vCard/Wi-Fi 协议串) | | 二维码识别 | 上传二维码图片,本地解码出内容 | jsQR + Canvas | | Favicon 制作 | 上传图片自动裁剪并生成 16/32/48/96/180/512 各尺寸图标 | Canvas 多尺寸裁剪 | | 图片加水印 | 为图片添加文字水印(位置/大小/透明度可调) | Canvas 文字水印 | | SVG 转 PNG | SVG 矢量图按倍率栅格化为高清 PNG | Canvas 栅格化 | | 占位图生成 | 生成自定义尺寸/颜色的占位图,输出 Data URI | Canvas Data URI | | 图片旋转/翻转 | 90°/180°/270° 旋转与水平/垂直镜像,实时预览 | Canvas 变换矩阵 | | 图片取色 | 提取图片主色调 Top 8 与占比,点击复制色值 | Canvas 像素分桶统计 | | 图片转字符画 | 图片转 ASCII 字符画(灰度采样/宽度可调/可反色) | Canvas 灰度采样(Rec.709) | | EXIF 照片信息 | 读取照片拍摄时间/相机参数/GPS 位置 | exifr(懒加载) | | 证件照换底色 | 自动识别证件照纯色背景,一键换成白/蓝/红等标准底色 | Canvas 角落取色 + 容差替换 | | 手写签名板 | 鼠标/手指手写签名,导出透明底 PNG | Canvas + Pointer Events | | 九宫格切图 | 图片居中裁方后切 3×3 九张,朋友圈排版神器 | Canvas 切片 | ### 生活工具(14 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | BMI 计算器 | 身体质量指数计算与分类(中国标准) | BMI 标准公式 + BMR/TDEE | | 房贷计算器 | 等额本息/等额本金月供、利息与还款总额计算 | 等额本息/等额本金标准公式 | | 汇率换算 | 12 种常用货币实时汇率换算 | 汇率开放接口(**联网**) | | 个税计算器 | 年度综合所得个税估算(税率表 + 速算扣除) | 年度综合所得税率表 | | 折扣/满减计算 | 折扣价与满减对比,自动判断更划算方案 | 自研比较公式 | | 年龄计算器 | 周岁/天数/下次生日倒计时/星座/生肖 | 周岁/虚岁精确计算 | | 日期间隔计算 | 两日期相差天数/工作日/月年换算 | 日期差值计算 | | 世界时钟 | 全球 10 个时区实时时间对照 | Intl.DateTimeFormat | | 配速计算器 | 跑步距离与用时换算配速/平均速度/完赛预测 | 配速换算公式 | | 复利计算器 | 本金 + 每年定投的复利终值,与单利收益对比 | 复利终值公式 | | 油耗费用计算 | 按里程/油耗/油价计算总油费与每公里成本 | 自研费用公式 | | 农历公历互转 | 农历与公历互转,附干支纪年/生肖/星座(1900-2100) | 自研农历压缩数据表 | | 睡眠周期计算 | 按 90 分钟睡眠周期推算最佳入睡/醒来时刻 | 90 分钟睡眠周期模型 | | 天气预报 | 城市当前天气与未来 7 天预报 | open-meteo(**联网**) | ### 文档处理(4 个) | 工具 | 用途 | 技术实现 | | --- | --- | --- | | PDF 文字提取 | 提取 PDF 全部文字,可下载为 TXT / Word / CSV | pdfjs-dist(懒加载) | | PDF 合并/拆分 | 本地合并多个 PDF,或按页码范围提取/拆分页面 | pdf-lib(懒加载) | | Excel 解析 | 解析 xlsx/xls/csv,工作表切换预览,导出 JSON / CSV | SheetJS(懒加载) | | 文件 HEX 查看 | 16 进制查看文件头,自动识别 PNG/JPEG/PDF/ZIP 等魔数类型 | DataView + 魔数特征库 | --- ## 八、使用技巧与快捷键 | 快捷键 | 作用 | | --- | --- | | `/` | 聚焦搜索框 | | `↑` `↓` | 在搜索结果中上下选择 | | `Enter` | 打开当前选中的工具 | | `Esc` | 清空搜索 / 输入框失焦 / 返回首页 | | `[` | 折叠或展开侧栏 | 其他技巧: - 搜索支持**拼音首字母**,例如 `sjc`(时间戳)、`erweima`(二维码)、`sfz`(身份证)、`nl`(农历) - 搜索支持**英文别名**,例如 `qr`、`password`、`jsonpath`、`2fa`、`wcag` - 每个工具有独立链接,可直接把 `#/tool/xxx` 发给同事 - 常用工具点星标收藏,会出现在侧栏顶部 - 页脚的「导出设置 / 导入设置」,换电脑时导入即可恢复收藏与主题(注意:导入不还原侧栏分组折叠状态) --- ## 九、项目结构 ``` parse-tool/ ├── index.html # 入口 HTML(含 SEO meta 与 manifest 引用) ├── package.json # 依赖与脚本(npm run dev / build / preview) ├── vite.config.ts # Vite 配置:dev server + manualChunks 分包 ├── tsconfig.json ├── LICENSE # MIT 许可证 ├── public/ │ ├── manifest.webmanifest # PWA 清单 │ ├── icon.svg # 站点图标 │ └── sw.js # Service Worker:离线缓存(仅生产环境注册) └── src/ ├── main.tsx # React 入口 + 生产环境注册 Service Worker ├── App.tsx # 应用外壳:Hash 路由、侧栏、主题、收藏/最近使用、快捷键 ├── tools.ts # ★ 工具注册表:13 个分类、174 个工具的声明式定义 ├── transforms.ts # ★ 纯函数转换库(编码/哈希/计算/解析,1800+ 行,可独立单测) ├── parsers.ts # JSON/XML/YAML/TOML/CSV 解析与序列化 ├── search.ts # 全局搜索:拼音匹配(pinyin-pro 懒加载)+ 英文别名 + 相关度评分 ├── lunar.ts # 农历/干支/生肖压缩数据表(1900-2100) ├── parts.tsx # 复用小组件(CopyButton 复制按钮、KvList 键值表) ├── ErrorBoundary.tsx # 视图错误边界,提供「重试」与「返回首页」 ├── styles.css # 全局样式与 5 套主题 CSS 变量 ├── types-js-beautify.d.ts # js-beautify 无官方类型,自写类型声明 ├── types-sm-crypto.d.ts # sm-crypto 无官方类型,自写类型声明 ├── vite-env.d.ts # Vite 环境类型(import.meta.env) └── views/ # 视图组件(按域聚合,全部 React.lazy) ├── HomeView.tsx # 首页:分类卡片总览 + 收藏/最近使用 ├── ConverterView.tsx # 通用双栏「解析/互转」视图(converter kind) ├── TransformView.tsx # 通用双栏「文本转换」视图(transform kind) ├── DataViews.tsx # 身份证号码解析 ├── CryptoViews.tsx # 哈希/HMAC/AES/Bcrypt/RSA/UUID/国密/文件加密 ├── GeneratorViews.tsx # 密码/令牌/随机数/IMEI/强度/姓名 ├── DevViews.tsx # 正则/SQL/MD/JSON 转 TS/JSON Path/Cron/HTTP 客户端/Mermaid 等 18 个 ├── TextViews.tsx # 文本清理/替换/提取/对比 ├── MiscViews.tsx # 进制/时间戳/颜色/URL 解析/UA/Cookie/请求头/MIME ├── DesignViews.tsx # 配色/CSS 效果/占位图/条码/对比度/取色/水印/SVG 转 PNG ├── MediaViews.tsx # 图片全家桶/二维码/PDF/Excel/EXIF/HEX 查看 ├── NetworkViews.tsx # IP/DNS/域名/子网/端口/Nginx 日志 ├── CalcViews.tsx # 统计/位运算/单位/计算器/温度/质数/欧姆/时区 ├── LifeViews.tsx # BMI/房贷/汇率/个税/日期/农历/天气等 14 个 └── ExtraViews.tsx # 秒表/倒计时/番茄钟/Emoji/TTS/按键码/设备信息 ``` --- ## 十、如何新增一个工具 按「从简到繁」三步走,**大多数文本转换类工具只需改两个文件、不到 10 行代码**。 ### 方式一:纯文本转换(复用 `transform` 双栏视图) 1. 在 `src/transforms.ts` 写纯函数(方便单测): ```ts export function toDoubleStruck(text: string): string { return text.replace(/[A-Za-z]/g, (c) => String.fromCodePoint(c.charCodeAt(0) + 0x1d538 - 65)) } ``` 2. 在 `src/tools.ts` 对应分类里注册: ```ts { id: 'my-tool', name: '我的工具', icon: '🛠', kind: 'transform', desc: '一句话说明用途(参与搜索)', modes: [{ name: '转换', fn: toDoubleStruck }], sample: '示例输入' } ``` 完成,无需改动路由。 ### 方式二:格式互转(复用 `converter` 双栏视图) 在 `tools.ts` 中提供 `parse` / `stringify` / `formats` 即可: ```ts { id: 'json2yaml', name: 'JSON 转 YAML', icon: '⇄', kind: 'converter', desc: '将 JSON 数据转换为 YAML 格式', parse: parseJson, stringify: stringifyYaml, formats: ['JSON', 'YAML'], sample: jsonSample } ``` ### 方式三:定制交互视图 1. 在 `src/views/xxxViews.tsx` 编写组件,用 `ToolFrame` 保证统一外观 - `ToolFrame` 定义在 `src/views/CryptoViews.tsx`(L809),提供标题栏、描述、示例填充与收藏按钮 - 复制结果请用 `src/parts.tsx` 的 `CopyButton`,展示键值对用 `KvList` 2. 在 `src/tools.ts` 注册一个新的 `kind` 3. 在 `src/App.tsx` 顶部加懒加载,并在 `ToolMain` 的 `switch` 里加一个 `case`: ```ts const MyView = lazy(() => import('./views/XxxViews').then((m) => ({ default: m.MyView }))) // ... case 'my-kind': return ``` 4. 可选:在 `src/search.ts` 的 `SEARCH_ALIAS` 里补充英文/口语别名,提升搜索命中率 --- ## 十一、浏览器兼容性与已知限制 | 项目 | 说明 | | --- | --- | | 推荐浏览器 | Chrome / Edge 100+,Firefox 100+,Safari 16+ | | 屏幕取色器 | 依赖 EyeDropper API,仅 **Chrome / Edge 95+** 可用,其他浏览器该工具不可用 | | 文字转语音 | 依赖 Web Speech API,发音人列表由操作系统/浏览器决定,各平台不一致 | | Gzip 压缩 | 依赖 CompressionStream,Safari 16.4+ 支持 | | PDF 文字提取 | 仅支持**基于文字的 PDF**;扫描件/图片型 PDF 无法提取文字(需 OCR,本项目不含) | | HTTP 请求测试 | 受浏览器同源策略限制,目标接口需返回 CORS 头;无法用于测试不允许跨域的接口 | | HTML 格式化 / CSS 美化 | 基础语法实现,不支持各类预处理器(SCSS/Less)与复杂异常结构 | | 数据持久化 | 收藏、最近使用、主题仅存在浏览器 localStorage,清缓存会丢失,请定期导出备份 | | 设置导入范围 | 导入会恢复收藏、最近使用与主题,但**不还原侧栏分组折叠状态** | | 大文件处理 | 文件加密、PDF 合并、图片处理均在浏览器内存中完成;文件哈希有 **200 MB** 上限,超大文件可能内存不足 | | IP 归属地查询 | 请求带 **8 秒**超时(AbortController),超时后需重试 | | 拼音搜索 | 拼音词典(pinyin-pro)为懒加载,**加载完成前搜索自动降级为纯子串匹配**;关键词需 **> 2 个字符**才会匹配工具描述(避免噪音) | | 最近使用条数 | 上限 8 条,超出自动淘汰最旧的 | --- ## 十二、常见问题 FAQ **Q:数据真的没有上传吗?** A:是的。项目没有后端,构建产物是纯静态文件。除「汇率换算」「天气预报」「域名 DNS 查询」「IP 归属地查询」这 4 个查询类工具会请求公共 API 外,其余 170 个工具的所有计算都在你的浏览器里完成。可用浏览器开发者工具的「网络」面板自行验证。 **Q:能离线使用吗?** A:可以。生产构建会注册 Service Worker,第一次访问后即可离线打开;在 Chrome/Edge 中还能通过地址栏「安装」把它装成桌面应用。 **Q:装在桌面后怎么更新?** A:页面导航采用 network-first 策略,联网时会自动拉取最新的 `index.html`,刷新即生效。若遇到版本异常,在开发者工具 → Application → Service Worker 中点击 Unregister 后刷新即可。 **Q:为什么首屏有 300 KB,感觉有点大?** A:首屏包含入口 + React + 4 个 vendor 包(XML/YAML/TOML/CSV 解析器与常用工具库)。这些是所有工具共享的基础能力,做成了可长缓存的独立 chunk,只有首次访问需要下载;后续访问直接命中缓存,打开具体工具时才会按需拉取对应代码块。 **Q:生成的密码 / 令牌 / UUID 安全吗?** A:使用 `crypto.getRandomValues`(密码学安全随机数 CSPRNG),不是 `Math.random()`。但请注意把生成的密钥保存在你自己的密码管理器里,本工具不会保存任何输入与输出。 **Q:IMEI 生成器、测试数据生成器可以用来做什么?** A:仅用于开发测试与演示数据填充,请勿用于任何违法用途。 **Q:部署到子路径后页面空白?** A:在 `vite.config.ts` 设置 `base: '/你的子路径/'` 后重新构建;若同时使用了 PWA,请把 `main.tsx` 中 Service Worker 的注册路径 `/sw.js` 同步调整为相对路径。 --- ## 十三、贡献与许可 欢迎提交 Issue 与 Pull Request: 1. Fork 本仓库并新建分支 2. 按上文「如何新增一个工具」的约定实现(纯函数放 `transforms.ts`,便于单测) 3. 提交前执行 `npm run build` 确保类型检查与构建通过 4. 提交 PR 时说明新增/修复的内容,如新增工具请一并补充 README 对应分类的表格行 ### License [MIT](./LICENSE) — 可自由使用、修改与分发,请保留版权声明。