路由配置文档
概述
本文档详细分析了邮轮穿舱件管理系统前端项目的路由配置,基于 src/router/index.js 文件进行全面的代码结构分析和依赖关系映射。
路由配置架构
基础配置
路由系统采用 Vue Router 作为核心路由管理库,配置了以下基础参数:
- 路由模式: History 模式(
mode: 'history') - 基础路径: 基于环境变量
process.env.VUE_APP_BASE_URL - 重复导航处理: 重写了 push 和 replace 方法以处理 NavigationDuplicated 错误
// 处理重复导航问题
const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => {
if (err.name !== 'NavigationDuplicated') throw err
})
}
路由守卫配置
系统配置了全局前置守卫(beforeEach)和全局后置守卫(afterEach):
- 前置守卫: 处理认证检查和调试模式逻辑
- 后置守卫: 当前为空实现,用于后续扩展
router.beforeEach((to, from, next) => {
// 认证检查逻辑
})
路由定义分析
路由结构总览
系统包含 18 个主要路由,涵盖以下功能模块:
| 路由路径 | 路由名称 | 组件路径 | 认证要求 |
|---|---|---|---|
| / | Index | 重定向到 /home | 默认 |
| /home | Home | @/views/HomeView.vue | 默认 |
| /workpiece | Workpiece | @/views/workpiece/WorkpieceView.vue | 默认 |
| /workpiece/edit/:id | WorkpieceEdit | @/views/workpiece/WorkpieceEdit.vue | 默认 |
| /image | Image | @/views/image/ImageView.vue | 默认 |
| /debug | Debug | @/views/debug/DebugView.vue | 默认 |
路由分类
1. 核心业务路由
- 工件管理:
/workpiece,/workpiece/edit/:id - 图片管理:
/image - 调度管理:
/dispatch相关路由
2. 系统管理路由
- 用户管理:
/user - 审核管理:
/audit - 搜索功能:
/search
3. 认证相关路由
- 登录:
/login(requiresAuth: false) - 注册:
/register(requiresAuth: false) - 登出:
/logout
4. 辅助功能路由
- 调试:
/debug - 关于:
/about(requiresAuth: false) - 404页面: 通配符路由
*
路由参数配置
动态路由参数
系统使用动态路由参数实现数据驱动的页面:
{
path: "/workpiece/edit/:id",
name: "WorkpieceEdit",
component: () => import('@/views/workpiece/WorkpieceEdit.vue'),
props: true
}
Props 配置
路由支持三种 props 配置方式:
- 布尔模式:
props: true- 将路由参数作为 props 传递 - 对象模式:
props: { mode: 'create' }- 传递静态 props - 函数模式: 未使用,但支持自定义逻辑
认证守卫逻辑
认证检查流程
flowchart TD
A[路由导航开始] --> B{是否为调试模式?}
B -->|是| C[跳过认证检查]
B -->|否| D[检查路由meta.requiresAuth]
D --> E{需要认证?}
E -->|否| F[允许导航]
E -->|是| G{用户已认证?}
G -->|是| F
G -->|否| H[重定向到登录页]
F --> I[导航完成]
H --> I
认证逻辑实现
const requiresAuth = to.matched.some(record => {
const meta = record.meta || {};
return Boolean(meta.requiresAuth);
});
if (requiresAuth && !isAuthenticated) {
next({
path: '/login',
query: { redirect: to.fullPath }
})
} else {
next()
}
组件依赖关系
路由组件映射
flowchart TD
subgraph 业务组件
A[HomeView.vue]
B[WorkpieceView.vue]
C[WorkpieceEdit.vue]
D[ImageView.vue]
end
subgraph 管理组件
E[UserAdmin.vue]
F[AuditView.vue]
G[DispatchDataView.vue]
end
subgraph 认证组件
H[LoginView.vue]
I[RegisterView.vue]
J[LogoutView.vue]
end
subgraph 辅助组件
K[AboutView.vue]
L[NotFoundView.vue]
M[DebugView.vue]
end
A -->|导入| Router
B -->|导入| Router
H -->|导入| Router
路由架构设计模式
1. 懒加载模式
所有路由组件均采用动态导入实现懒加载:
component: () => import('@/views/HomeView.vue')
2. 认证分离设计
认证相关路由明确标记 requiresAuth: false,实现认证逻辑与业务逻辑的分离。
3. 错误处理机制
重写路由方法处理 NavigationDuplicated 错误,提升用户体验。
4. 环境适配
通过环境变量区分开发和生产环境的认证行为。
性能优化建议
路由分割优化
建议将路由按功能模块进行分组,实现更精细的代码分割:
// 建议的分组方式
const workpieceRoutes = [
{ path: '/workpiece', component: WorkpieceView },
{ path: '/workpiece/edit/:id', component: WorkpieceEdit }
]
const adminRoutes = [
{ path: '/user', component: UserAdmin },
{ path: '/audit', component: AuditView }
]
索引
邮轮穿舱件管理系统的路由配置采用了现代化的 Vue Router 架构,具备以下特点:
- 完整的认证体系: 基于路由守卫的认证检查机制
- 模块化设计: 按功能划分的路由结构
- 性能优化: 组件懒加载和错误处理
- 可扩展性: 清晰的路由参数和 props 配置
该路由配置为系统提供了稳定、可维护的导航基础,支持后续功能扩展和性能优化。