1. 路由配置javascript下载复制运行// 使用 HashRouter 适配本地文件环境
import { HashRouter as Router } from 'react-router-dom';原因:HashRouter 使用 # 路由
生产环境打包配置javascript下载复制运行// vite.config.js
base: isProduction ? '' : '/'要点:
生产环境使用空字符串 '',生成纯相对路径资源引用
开发环境使用 '/',适配开发服务器
确保本地 file:// 和 WebView 都能正常加载资源
剪贴板 API 兼容性处理javascript下载复制运行const handleCopy = async (text) => {
try {
// 优先使用现代 Clipboard API
if (navigator.clipboard && navigator.clipboard.writeText) {
await navigator.clipboard.writeText(text);
} else {
// 备用方案:使用传统的 execCommand 方法
const textArea = document.createElement('textarea');
textArea.value = text;
textArea.style.position = 'fixed';
textArea.style.left = '-999999px';
document.body.appendChild(textArea);
textArea.select();
document.execCommand('copy');
textArea.remove();
}
} catch (error) {
console.error('复制失败:', error);
}
};要点:
优先使用 Clipboard API
降级到 execCommand 作为备用
兼容不同浏览器环境
JSON 格式化显示与复制JsonViewer 组件特性:
支持双击复制
格式化 JSON 显示
处理多层转义的 JSON 字符串
自动清理转义字符
要点:
解析 JSON 后再格式化,避免转义字符问题
处理双重转义的情况
提供便捷的复制功能
避免双重 JSON.stringify问题代码:
javascript下载复制运行// ❌ 错误:双重转义
result = JSON.stringify(obj);
setDecryptedText(JSON.stringify(result));解决方案:
javascript下载复制运行// ✅ 正确:只转义一次
const resultString = JSON.stringify(result);
setDecryptedText(resultString);
修改 vite.config.js:base: isProduction ? '' : '/'
确保 WKWebView 加载时允许访问整个 dist 目录:
解决:实现双重降级策略,优先使用现代 API,失败时降级到传统方法
JSON 复制带转义字符问题:复制的 JSON 包含转义反斜杠
解决:
解析 JSON 后再格式化输出
处理多层转义的情况
确保最终输出的是干净的 JSON 格式
项目结构复制react-utils-project/
├── src/
│ ├── pages/ # 页面组件
│ │ ├── HomePage.jsx
│ │ ├── DescryptorPage.jsx
│ │ └── JumpConfigPage.jsx
│ ├── descryptorComponents/ # 解密器组件
│ │ ├── Descryptor.jsx
│ │ ├── RequestDecryptor.jsx
│ │ ├── ResposeDecryptor.jsx
│ │ └── JsonViewer.jsx
│ ├── jumpAppConfigComponts/ # 跳转配置组件
│ │ └── JumpConfig.tsx
│ ├── utils/ # 工具函数
│ │ └── encrypt/ # 加密工具
│ │ ├── aes/
│ │ ├── des/
│ │ └── rsa/
│ └── App.jsx # 主应用组件
├── dist/ # 构建输出
├── vite.config.js # Vite 配置
└── package.json最佳实践1. 环境区分配置开发环境:使用绝对路径,方便本地调试
生产环境:使用相对路径,适配多种部署场景
错误处理所有异步操作都使用 try-catch
提供用户友好的错误提示
实现降级方案
用户体验优化一键复制功能
JSON 格式化显示
双击快速复制
操作反馈提示
代码组织组件化设计
工具函数模块化
样式文件分离




1. 前端工程化Vite 构建配置优化
生产环境资源路径处理
代码混淆与压缩
跨平台兼容不同浏览器 API 兼容性处理
本地文件环境适配
加密算法应用AES 加密/解密实现
DES 加密/解密实现
多种加密模式支持
React 开发函数式组件与 Hooks
状态管理
路由配置