3.2 KiB
3.2 KiB
版本切换功能实现总结
实现概述
在设置的开发者选项中添加了版本切换功能,用户可以在 V1 和 V2 版本之间切换。
修改的文件
1. Web/src/stores/version.js (新增)
- 创建 Pinia store 管理版本状态
- 使用 localStorage 持久化版本选择
- 提供
setVersion()和isV2()方法
2. Web/src/views/SettingView.vue (修改)
- 在开发者选项中添加"切换版本"选项
- 显示当前版本(V1/V2)
- 实现版本切换对话框
- 实现版本切换后的路由跳转逻辑
3. Web/src/router/index.js (修改)
- 引入 version store
- 在路由守卫中添加版本路由重定向逻辑
- V2 模式下自动跳转到 V2 路由(如果存在)
- V1 模式下自动跳转到 V1 路由(如果在 V2 路由)
核心功能
-
版本选择界面
- 设置页面显示当前版本
- 点击弹出对话框,选择 V1 或 V2
- 切换成功后显示提示信息
-
智能路由跳转
- 选择 V2 后,如果当前路由有 V2 版本,自动跳转
- 选择 V1 后,如果当前在 V2 路由,自动跳转到 V1
- 没有对应版本时,保持当前路由不变
-
路由守卫保护
- 每次路由跳转时检查版本设置
- 自动重定向到正确版本的路由
- 保留 query 和 params 参数
-
状态持久化
- 版本选择保存在 localStorage
- 刷新页面后版本设置保持不变
V2 路由命名规范
V2 路由必须遵循命名规范:原路由名-v2
示例:
- V1:
calendar→ V2:calendar-v2 - V1:
budget→ V2:budget-v2
当前支持的 V2 路由
calendar→calendar-v2(CalendarV2.vue)
测试验证
- ✅ ESLint 检查通过(无错误)
- ✅ 构建成功(pnpm build)
- ✅ 所有修改文件符合项目代码规范
使用示例
用户操作流程
- 进入"设置"页面
- 滚动到"开发者"分组
- 点击"切换版本"(当前版本显示在右侧)
- 选择"V1"或"V2"
- 系统自动跳转到对应版本的路由
开发者添加新 V2 路由
// router/index.js
{
path: '/xxx-v2',
name: 'xxx-v2',
component: () => import('../views/XxxViewV2.vue'),
meta: { requiresAuth: true }
}
添加后即可自动支持版本切换。
技术细节
版本检测逻辑
// 在路由守卫中
if (versionStore.isV2()) {
// 尝试跳转到 V2 路由
const v2RouteName = `${routeName}-v2`
if (存在 v2Route) {
跳转到 v2Route
} else {
保持当前路由
}
}
版本状态管理
// stores/version.js
const currentVersion = ref(localStorage.getItem('app-version') || 'v1')
const setVersion = (version) => {
currentVersion.value = version
localStorage.setItem('app-version', version)
}
注意事项
- V2 路由必须按照
xxx-v2命名规范 - 如果页面没有 V2 版本,切换后会保持在 V1 版本
- 路由守卫会自动处理所有版本相关的路由跳转
- 版本状态持久化在 localStorage 中
后续改进建议
- 可以在 UI 上添加更明显的版本标识
- 可以在无 V2 路由时给出提示
- 可以添加版本切换的动画效果
- 可以为不同版本设置不同的主题样式