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:
unplugin-vue-router 正式并入 vuejs/router 核心仓库
这并不是一个普通功能更新,而是一个非常明确的信号:
Vue Router 5 的核心方向已经确定:官方级「路由自动化」来了。
什么是“路由自动化”?
简单概括:不用再手写 routes,文件结构就是路由结构。
例如下面这样的目录:
src/pages/
├── index.vue → /
├── users.vue → /users
└── users/[id].vue → /users/:id
插件会在构建阶段自动扫描文件,生成完整的路由表,你不需要再维护一大坨 routes 配置。
这套模式在 Nuxt、Next.js 里早就被验证过,而现在——它正式成为 Vue Router 官方能力的一部分。
不只是少写代码,而是更安全
unplugin-vue-router 真正的价值,并不只是“偷懒”。
路由参数完全类型安全
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 了。