《Vue 项目路由 + Layout 的最佳实践》

@[toc]

前言:路由乱,本质是"页面结构没设计"

很多项目后期路由文件看起来像这样:

  • 一个文件 1000 行
  • Layout 套 Layout
  • 新页面不知道该放哪

说白了就是一句话:

路由和页面结构是"边写边凑"的。

一、Layout 的职责一定要收紧

一句话定义 Layout:

只管结构,不管业务。

Layout 里应该有什么?

  • Header
  • Sidebar
  • Footer
  • <router-view />

不应该有什么?

  • 接口请求
  • 权限判断
  • 业务状态

二、最推荐的 Layout 结构

text 复制代码
Layout
 ├─ Header
 ├─ Sidebar
 └─ MainContent (router-view)

这个结构的好处是:

  • 所有页面共享结构
  • 页面只关心自己内容

三、路由如何"自动套 Layout"

js 复制代码
{
  path: '/',
  component: MainLayout,
  children: [
    {
      path: 'dashboard',
      component: Dashboard
    }
  ]
}

这样做的本质是:

Layout 是路由的一部分,而不是页面自己引的组件

四、多 Layout 怎么处理?

真实项目里几乎一定有:

  • 登录页 Layout
  • 后台 Layout
  • 全屏页 Layout

解决方式非常简单:

js 复制代码
{
  path: '/login',
  component: BlankLayout
},
{
  path: '/',
  component: AdminLayout,
  children: [...]
}

你会发现:

  • 页面不需要知道自己用什么 Layout
  • 路由一眼就能看懂结构

五、菜单一定是"路由的衍生物"

不要自己维护一份菜单数据。

js 复制代码
const menus = routes.map(route => ({
  title: route.meta.title,
  path: route.path
}))

这样做的好处是:

  • 权限变了,菜单自然变
  • 不存在"菜单有,页面进不去"

六、路由文件一定要拆模块

text 复制代码
router/
 ├─ index.ts
 ├─ modules/
 │   ├─ user.ts
 │   ├─ order.ts
 │   └─ admin.ts

每个模块只关心自己:

  • 新功能 = 新文件
  • 删除模块 = 删文件

七、总结一句话

路由是页面结构的说明书,不是业务代码的垃圾桶。

相关推荐
a1117763 分钟前
Three.js 3D模型动画展示项目(开源)
开发语言·javascript·ecmascript
周星星日记5 分钟前
pnpm为什么成为"最先进的管理包工具"
前端
多厘7 分钟前
使用 opencode 和灵感写一个 mac App (实操版)
前端·github
Wect8 分钟前
LeetCode 918. 环形子数组的最大和:两种解法详解
前端·算法·typescript
炫饭第一名11 分钟前
从前端视角解读 OpenClaw(上):Lit 驱动的 AI 控制网关面板
前端·人工智能·前端框架
掘金者阿豪11 分钟前
MiGPT GUI给小爱音箱装「AI 大脑」,自定义人设 + 百变音色!cpolar 内网穿透实验室第 726 个成功挑战
前端·后端
滴滴答答哒15 分钟前
layui响应式表单上下结构
前端·javascript·layui
天问一19 分钟前
Cesium 中 PointPrimitiveCollection 与 primitives 的结合使用
前端
小村儿21 分钟前
觉醒的agent:AI为何抛弃React和Vue,自创Aether框架
前端·agent·ai编程
小J听不清29 分钟前
CSS 文本样式全解析:颜色 / 对齐 / 装饰 / 缩进
前端·javascript·css·html·css3