Vue中文社区

Vue Router 5:【手写路由】时代终结!

如果你写 Vue 写得够久,一定对一段代码非常熟悉:

const routes = [
  { path: '/', component: Home },
  { path: '/users/:id', component: User }
]

它不复杂,但几乎每个项目都会写一遍。

而且一旦项目变大,路由文件只会越来越长、越来越难维护。

现在,手写路由?不存在的!

Vue Router 5 自动化路由正式上线!

Vue Router 5 已进入实质阶段

最近,Vue Router 作者 Eduardo(posva) 合并了一个重量级 PR:

Image

unplugin-vue-router 正式并入 vuejs/router 核心仓库

这并不是一个普通功能更新,而是一个非常明确的信号:

Vue Router 5 的核心方向已经确定:官方级「路由自动化」来了。

什么是“路由自动化”?

简单概括:不用再手写 routes,文件结构就是路由结构。

Image

例如下面这样的目录:

src/pages/
├── index.vue        → /
├── users.vue        → /users
└── users/[id].vue   → /users/:id

插件会在构建阶段自动扫描文件,生成完整的路由表,你不需要再维护一大坨 routes 配置。

这套模式在 Nuxt、Next.js 里早就被验证过,而现在——它正式成为 Vue Router 官方能力的一部分。

不只是少写代码,而是更安全

unplugin-vue-router 真正的价值,并不只是“偷懒”。

Image

路由参数完全类型安全

router.push({
  name: 'users-id',
  params: { id: 123 }
})
  • 路由名拼错 → 编译期直接报错
  • 参数类型不对 → TS 立即提示

很多原本只能在运行时踩的坑,现在提前在编辑器里就被拦住了。

默认懒加载,零心智负担

所有页面都会自动变成:

() => import('./pages/xxx.vue')

不用你手动写异步组件,也不会忘记做代码分割,对性能和维护都更友好。

官方方案,而不是“社区野路子”

这是最关键的一点:

它不再是第三方插件,而是 Vue Router 官方核心的一部分。

意味着:

  • API 稳定性更高
  • 长期维护有保障
  • 会和 Vue、Vite、TypeScript 深度协同

对中大型项目来说,这一点非常重要。

Vue Router 5 在“学谁”?

如果你觉得有点熟悉,其实很正常:

  • 文件即路由 → 像 Nuxt / Next
  • 类型安全 → 像 Remix
  • 构建期生成 → 更现代的前端工具链

但 Vue Router 5 的选择依然很 Vue:给能力,但不强制你必须用。

你依然可以:

  • 手写 routes
  • 渐进式接入
  • 只用类型安全,不用文件路由

而不是被“强制框架化”。

如何快速升级?现在就能用上

这里有个好消息:

你不需要等 Vue Router 5 正式发布,现在就可以用上它的核心能力。

因为这次合并进核心的 unplugin-vue-router,本身就是一个构建期插件,对现有项目非常友好。

老项目:最稳妥的升级方式(推荐)

不升级 Vue Router 主版本,只引入路由自动化能力。

安装插件:

npm i -D unplugin-vue-router

配置 Vite:

// vite.config.ts
import VueRouter from'unplugin-vue-router/vite'
import vue from'@vitejs/plugin-vue'

exportdefault {
  plugins: [
    VueRouter(),
    vue()
  ]
}

使用自动生成的 routes:

import { createRouter, createWebHistory } from'vue-router'
import { routes } from'vue-router/auto-routes'

exportconst router = createRouter({
  history: createWebHistory(),
  routes
})

到这里为止,你已经获得了:

  • 文件即路由
  • 自动懒加载
  • 路由参数类型安全

而且不需要改动任何业务页面。

新项目:直接用“未来写法”

如果是新项目,建议直接:

  • 使用 src/pages 规划路由
  • 放弃手写 routes
  • 用文件结构表达业务结构

体验基本就是 Nuxt 的路由能力,但保持纯 Vue 项目形态。

渐进式迁移,也完全没问题

你甚至可以:

  • 老 routes 继续用
  • 新页面走文件路由
  • 一点点迁移历史包袱

Vue Router 5 的设计思路非常清晰:

不强推、不破坏、允许共存。

写在最后

Vue Router 5 还没正式发布,但方向已经非常明确了。

路由自动化 + 类型安全,已经不是“要不要”的问题,而是“什么时候全面用上”。

可以确定的是:

下一个 Vue 项目,你很可能再也不会手写 routes 了。