1. 项目背景与核心价值
去年在重构公司内部系统时,我频繁需要在不同工具间切换:JSON格式化、时间戳转换、正则表达式测试...每次打开一堆网页或安装本地工具实在低效。于是萌生了开发一个聚合型在线工具箱的想法——把开发者日常高频使用的工具集中到一个轻量级网站中。
这个工具箱网站目前集成了12种实用开发工具,包括:
- 代码格式化类(JSON/XML美化)
- 编码转换类(Base64/URL编解码)
- 数据生成类(Mock数据/哈希生成)
- 网络工具类(IP查询/HTTP头分析)
关键设计原则:即开即用+零学习成本。所有工具都采用单页交互模式,无需注册登录,输入即输出。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构解析
2.1 前端技术选型
采用Vue3 + Vite构建,主要考虑:
- 性能优势:Vite的ESM原生加载比Webpack打包快3-5倍
- 组合式API:工具逻辑封装成独立composable函数(如
useBase64) - 轻量化UI:仅引入Element Plus的Message组件(整体包体积<100KB)
javascript复制// 典型工具模块结构
export function useJsonFormatter() {
const formatted = ref('')
const format = (rawJson) => {
try {
formatted.value = JSON.stringify(JSON.parse(rawJson), null, 2)
} catch(e) {
throw new Error('Invalid JSON')
}
}
return { formatted, format }
}
2.2 后端服务设计
虽然多数工具可纯前端实现,但考虑到:
- 部分工具需要服务端计算(如SSH密钥生成)
- 需要防止XSS攻击(特别是HTML转义工具)
- 未来可能添加需要鉴权的工具
采用Serverless架构:
- BFF层:Cloudflare Workers处理路由(<50ms冷启动)
- 持久层:Supabase免费版存储用户自定义配置
- 安全防护:对POST请求进行内容嗅探和速率限制
3. 核心工具实现细节
3.1 正则表达式测试器
难点在于实时匹配的性能优化:
- 使用Web Worker避免主线程卡顿
- 对超过1MB的文本启用抽样检测(取首尾各100行)
- 通过
debounce控制触发频率(默认300ms)
javascript复制// Worker线程处理正则匹配
self.onmessage = ({data}) => {
const { pattern, flags, text } = data
try {
const regex = new RegExp(pattern, flags)
const matches = [...text.matchAll(regex)]
postMessage({ matches })
} catch(e) {
postMessage({ error: e.message })
}
}
3.2 时间戳转换工具
支持多种格式互转:
- 自动检测输入格式(10/13位时间戳或ISO字符串)
- 时区智能转换(基于Intl.DateTimeFormat)
- 节假日计算(内置中国法定节假日库)
踩坑记录:Safari对日期字符串的解析与其他浏览器不一致,必须显式指定
YYYY/MM/DD格式
4. 性能优化实践
4.1 加载速度提升
- 工具模块动态导入:
const module = await import('./tools/jsonFormatter') - 关键工具预加载:
<link rel="prefetch" href="/tools/hash-generator.js"> - WASM加速:CRC计算改用Rust编译的WebAssembly(速度提升8倍)
4.2 内存管理
- 大文本处理时启用虚拟滚动
- 定期清理剪贴板数据(setTimeout + WeakRef)
- 对超过5MB的输入文件提示使用本地工具
5. 开发者常见问题排查
5.1 CORS问题处理
当工具需要调用第三方API时:
- 配置Cloudflare Workers反向代理
- 对敏感API添加
allow-origin白名单 - 前端添加重试机制(指数退避算法)
5.2 移动端适配
- 输入框禁用iOS首字母大写:
autocapitalize="off" - 避免100vh问题:
height: calc(var(--vh, 1vh) * 100) - 触摸事件防误触:
touch-action: manipulation
6. 未来迭代方向
- 工具协作流:比如正则测试器直接对接代码生成器
- 插件体系:允许用户提交自定义工具(需沙箱隔离)
- CLI版本:通过
curl toolbox.dev/api/json?q={data}调用
这个项目给我的最大启示是:工具类产品的核心价值不在于技术复杂度,而在于精准解决高频痛点。有开发者反馈说每天要打开这个网站5-6次,这比任何技术指标都让我有成就感。
