7.1 KiB
7.1 KiB
Vue 迁移检查清单
📋 迁移前准备
代码备份
- 创建新的 Git 分支
vue-migration - 提交当前所有更改
- 创建备份标签
git tag backup-before-vue-migration
环境准备
- 确认 Node.js 版本 >= 16.0.0
- 清理 node_modules 和 package-lock.json
- 准备测试环境
🔧 依赖管理
移除 React 依赖
- 移除
react - 移除
react-dom - 移除
lucide-react - 移除
@vitejs/plugin-react - 移除
@types/react - 移除
@types/react-dom - 移除
eslint-plugin-react-hooks - 移除
eslint-plugin-react-refresh
安装 Vue 依赖
- 安装
vue@^3.4.0 - 安装
pinia@^2.1.0 - 安装
vue-router@^4.2.0(可选) - 安装
lucide-vue-next@^0.344.0 - 安装
@vueuse/core@^10.7.0(可选) - 安装
@vitejs/plugin-vue@^5.0.0 - 安装
vue-tsc@^1.8.25 - 安装
@vue/eslint-config-typescript@^12.0.0 - 安装
eslint-plugin-vue@^9.20.0
⚙️ 配置文件更新
package.json
- 更新
scripts.build为vue-tsc && vite build - 更新
scripts.lint支持 Vue 文件 - 添加
scripts.type-check脚本 - 移除所有 React 相关依赖
- 添加所有 Vue 相关依赖
vite.config.ts
- 替换
@vitejs/plugin-react为@vitejs/plugin-vue - 添加路径别名
@指向./src - 保持服务器配置不变
- 保持预览配置不变
tsconfig.json
- 更新
jsx为"preserve" - 添加
baseUrl: "." - 添加
paths: { "@/*": ["./src/*"] } - 确保
include包含*.vue文件
新建文件
- 创建
src/env.d.ts(Vue 类型声明) - 创建
.eslintrc.cjs(ESLint 配置) - 创建
src/stores/目录 (Pinia stores)
📁 文件结构迁移
组件文件转换
src/components/ProgressBar.tsx→ProgressBar.vuesrc/components/SidebarItem.tsx→SidebarItem.vuesrc/components/TableCheckItem.tsx→TableCheckItem.vuesrc/components/Toast.tsx→Toast.vue+ToastItem.vuesrc/layouts/MainLayout.tsx→MainLayout.vuesrc/layouts/Sidebar.tsx→Sidebar.vuesrc/pages/DashboardView.tsx→DashboardView.vuesrc/pages/ProjectListView.tsx→ProjectListView.vuesrc/pages/EngagementView.tsx→EngagementView.vuesrc/pages/engagement/SetupStep.tsx→SetupStep.vuesrc/pages/engagement/InventoryStep.tsx→InventoryStep.vuesrc/pages/engagement/ContextStep.tsx→ContextStep.vuesrc/pages/engagement/ValueStep.tsx→ValueStep.vuesrc/pages/engagement/DeliveryStep.tsx→DeliveryStep.vue
状态管理迁移
src/contexts/ToastContext.tsx→src/stores/toast.ts(Pinia)- 创建
src/stores/index.ts(Pinia 导出)
入口文件迁移
src/main.tsx→src/main.tssrc/App.tsx→src/App.vue
保持不变的文件
src/types/index.ts(类型定义)src/data/mockData.ts(模拟数据)src/index.css(样式文件)tailwind.config.js(Tailwind 配置)
🔄 代码转换检查
Hooks 转换
- 所有
useState转换为ref或reactive - 所有
useEffect转换为watch或watchEffect - 所有
useMemo转换为computed - 所有
useCallback转换为普通函数或computed - 所有
useContext转换为inject或 Pinia store - 所有
useRef转换为ref
事件处理转换
- 所有
onClick转换为@click - 所有
onChange转换为@change或v-model - 所有
onSubmit转换为@submit - 所有事件处理器参数正确传递
条件渲染转换
- 所有
{condition && <Component />}转换为<Component v-if="condition" /> - 所有三元表达式转换为
v-if/v-else - 所有
map循环转换为v-for
Props 和 Emits
- 所有组件 Props 使用
defineProps<Props>() - 所有事件使用
defineEmits<Emits>() - Props 传递使用
:prop="value" - 事件监听使用
@event="handler"
图标库转换
- 所有
lucide-react导入替换为lucide-vue-next - 所有图标组件
size={20}替换为:size="20" - 所有图标组件正确渲染
样式类转换
- 所有
className替换为class - 所有动态类使用
:class绑定 - Tailwind CSS 类保持不变
🧪 功能测试清单
Dashboard 页面
- KPI 卡片正常显示
- 项目作业全景表正常显示
- 风险雷达正常显示
- 所有数据正常加载
项目列表页面
- 项目列表正常显示
- 搜索功能正常
- 筛选功能正常
- 项目卡片点击正常
- 新建项目功能正常
项目作业台
- 步骤导航器正常显示
- 步骤切换正常
- SetupStep: 表单验证正常
- SetupStep: 行业选择正常
- InventoryStep: 方案选择正常
- InventoryStep: 文件上传正常
- InventoryStep: 结果表格正常
- InventoryStep: 排序功能正常
- ContextStep: 表单填写正常
- ContextStep: 场景添加正常
- ValueStep: 场景显示正常
- ValueStep: 场景选择正常
- DeliveryStep: 交付物列表正常
- DeliveryStep: 下载功能正常
通用功能
- Toast 通知正常显示
- Toast 自动关闭正常
- 演示模式切换正常
- 侧边栏导航正常
- 响应式布局正常
- 移动端适配正常
🐛 错误检查
编译错误
- 运行
npm run dev无编译错误 - 运行
npm run build无构建错误 - 运行
npm run type-check无类型错误
运行时错误
- 浏览器控制台无错误
- 所有页面正常加载
- 所有交互正常响应
类型错误
- 所有 TypeScript 类型正确
- 所有组件 Props 类型正确
- 所有事件类型正确
📊 性能检查
加载性能
- 首屏加载时间 ≤ 2s
- 页面切换流畅
- 无长时间阻塞
运行时性能
- 大数据量表格渲染正常
- 无内存泄漏
- 无不必要的重渲染
🧹 清理工作
删除旧文件
- 删除所有
.tsx文件 - 删除
src/contexts/目录(如果不再需要) - 删除 React 相关配置文件
更新文档
- 更新 README.md
- 更新技术栈说明
- 更新开发指南
- 更新部署文档
Git 提交
- 提交所有更改
- 编写详细的提交信息
- 创建 Pull Request(如适用)
✅ 最终验收
功能完整性
- 所有功能正常工作
- 所有交互行为一致
- 所有样式保持一致
代码质量
- 代码符合 Vue 3 最佳实践
- 无 ESLint 错误
- 无 TypeScript 错误
- 代码注释完整
文档完整性
- README 已更新
- 迁移文档完整
- 代码注释清晰
📝 备注
在迁移过程中遇到的问题和解决方案:
迁移完成日期: _______________
迁移负责人: _______________
审核人: _______________