Go to file
夏犀麟 6e25de5c21 feat: 全站拖拽上传 + 图片压缩批量与多选项优化
- 新增 UploadDrop 通用组件:点击选择 + 拖拽上传、图片缩略图回显、
  批量/单文件、删除,替代各页面的 t-upload 文件模式
- 图片压缩重写:批量(最多 20 张)、按质量/限制大小双模式、
  等比缩放、保持原格式、JPG 透明图白底填充、jszip 批量下载
- 修复压缩页历史解析正则 bug(/| jpg/ 恒为 true)与 slider label 类型错误
- 裁剪/二维码/Base64/哈希/OCR 页面统一接入 UploadDrop,文件变化改用 watch 响应
- 更新 agents.md 与 README:UploadDrop 约定、新坑位与依赖说明
2026-08-21 15:37:06 +08:00
src feat: 全站拖拽上传 + 图片压缩批量与多选项优化 2026-08-21 15:37:06 +08:00
.gitignore feat: 初始化纯前端在线工具站 2026-08-21 12:15:33 +08:00
agents.md feat: 全站拖拽上传 + 图片压缩批量与多选项优化 2026-08-21 15:37:06 +08:00
index.html feat: 初始化纯前端在线工具站 2026-08-21 12:15:33 +08:00
package.json feat: 全站拖拽上传 + 图片压缩批量与多选项优化 2026-08-21 15:37:06 +08:00
pnpm-lock.yaml feat: 全站拖拽上传 + 图片压缩批量与多选项优化 2026-08-21 15:37:06 +08:00
README.md feat: 全站拖拽上传 + 图片压缩批量与多选项优化 2026-08-21 15:37:06 +08:00
tsconfig.json feat: 初始化纯前端在线工具站 2026-08-21 12:15:33 +08:00
tsconfig.node.json feat: 初始化纯前端在线工具站 2026-08-21 12:15:33 +08:00
unocss.config.ts feat: 全站拖拽上传 + 图片压缩批量与多选项优化 2026-08-21 15:37:06 +08:00
vite.config.ts feat: 初始化纯前端在线工具站 2026-08-21 12:15:33 +08:00

在线工具箱tool.xpcool.com

纯前端在线工具站:Vite + Vue3 + Pinia + TypeScript + UnoCSS + TDesign。14 个常用工具,所有文件处理与计算均在浏览器本地完成,不上传任何用户数据到服务器

功能特性

  • 14 个实用工具:图片压缩/裁剪、二维码生成解析、JSON 格式化、时间戳转换、Base64 编解码、JWT 解析、Cron 表达式、进制转换、哈希计算、身份证解析、地址解析、URL 解析、图片 OCR 识别
  • 左侧固定导航 + 中间内容区PC Web 与移动端 H5 响应式适配(移动端为抽屉导航)
  • 暗黑 / 浅色主题切换,选择持久化,刷新不丢失
  • 每个工具独立路由、独立本地历史记录localStorage
  • 所有文件上传支持点击选择 + 拖拽上传,图片自动缩略图回显;图片压缩支持批量、按质量/限制大小、等比缩放与 ZIP 批量下载
  • 通用组件:拖拽上传、复制按钮、下载按钮、错误提示、历史记录面板
  • 全部能力由浏览器原生 API、WebAssembly 与 npm 前端库实现,无任何 mock 后端接口、无 CDN 脚本引入

技术栈

类别 选型
构建 Vite 6 + pnpm
框架 Vue 3<script setup> 组合式 API
语言 TypeScriptstrict
状态 Pinia
UI TDesign Vue Next + tdesign-icons-vue-next
样式 UnoCSS 原子类 + SCSS使用 TDesign 设计令牌变量)
路由 Vue Router 4History 模式)

工具依赖:qrcodejsqrcropperjsbrowser-image-compressiontesseract.jscron-parserspark-md5jszip(全部通过 npm 安装)。

快速开始

要求Node.js ≥ 18pnpm ≥ 8。

# 1. 安装依赖
pnpm install

# 2. 启动开发服务器(默认 http://localhost:5173
pnpm dev

# 3. 类型检查
pnpm type-check

# 4. 生产构建(输出到 dist/
pnpm build

# 5. 本地预览构建产物
pnpm preview

页面路由

路由 工具
/ 首页(工具卡片导航)
/image-compress 图片压缩
/image-cropper 图片裁剪
/qrcode 二维码生成 / 解析
/json-format JSON 格式化
/timestamp 时间戳转换
/base64 Base64 编解码
/jwt-parse JWT 解析
/cron Cron 表达式工具
/radix-convert 进制转换
/hash 哈希计算
/idcard 身份证解析
/address-parse 地址解析
/url-parse URL 解析
/ocr 图片 OCR 识别

目录结构

├── index.html                  # 入口 HTML含防闪烁主题脚本
├── package.json
├── vite.config.ts              # Vite 配置(别名、分包)
├── unocss.config.ts            # UnoCSS 配置(快捷类)
├── tsconfig.json / tsconfig.node.json
└── src/
    ├── main.ts                 # 应用入口TDesign 全量注册、主题初始化)
    ├── App.vue
    ├── env.d.ts
    ├── assets/styles/          # 全局样式TDesign 令牌变量)
    ├── router/
    │   ├── index.ts            # 路由表(由注册表生成)
    │   └── tools.ts            # ★ 工具注册表(唯一数据源)
    ├── stores/theme.ts         # 主题状态Pinia
    ├── composables/
    │   ├── useHistory.ts       # 本地历史记录
    │   ├── useClipboard.ts     # 剪贴板复制
    │   └── useDownload.ts      # 本地文件下载
    ├── components/common/      # UploadDrop / CopyButton / DownloadButton / ErrorAlert / HistoryPanel
    ├── layout/                 # MainLayout响应式布局+ SideNav侧边导航
    ├── utils/index.ts          # 通用工具函数
    └── views/                  # 首页 + 14 个工具页面(每个工具一个目录)

部署

构建产物为纯静态文件,托管到任意静态服务器或 OSS/CDN 即可。使用 History 路由需配置回退(以 Nginx 为例):

location / {
  root /usr/share/nginx/html;
  index index.html;
  try_files $uri $uri/ /index.html;
}

隐私说明

所有计算均在浏览器本地完成:图片压缩/裁剪/OCR 使用本地 Canvas/WASM哈希使用本地 Web Crypto 与 spark-md5历史记录仅存于本机 localStorage。项目不包含任何后端接口调用用户文件永远不会离开浏览器。

OCR 语言包说明

OCR 的引擎代码worker + wasm已随 npm 依赖打包进产物;语言数据属于运行时资源,默认从官方语言包源加载(首次识别约 20MB浏览器会缓存。如需完全离线部署下载 chi_sim.traineddata.gzeng.traineddata.gz 放入 public/traineddata/,并将 src/views/ocr/OcrView.vue 中的 LANG_PATH 改为 ${window.location.origin}/traineddata

维护与扩展

新增工具、修改架构、排查问题的完整说明见 agents.md