如果你是 Vue 的长期使用者,一定对下面这段代码非常熟悉:
const routes = [
{ path: '/', component: Home },
{ path: '/users/:id', component: User }
]
它并不复杂,但几乎是每个项目都必须重复编写的部分。随着项目规模的增长,这个路由配置文件只会变得越来越长、越来越难以维护。
现在,或许我们可以和这种手写路由配置的时代说再见了。随着 Vue Router 5 核心特性的确定,自动化、基于文件的路由将成为未来。

最近,Vue.js 官方路由库 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 配置。
这套“文件即路由”的模式在 Next.js 和 Nuxt 中早已被广泛验证,而现在,它正式成为了 Vue Router 官方能力的一部分。
不仅仅是少写代码,更是为了安全
unplugin-vue-router 带来的真正价值,远不止是“偷懒”这么简单。

路由参数完全类型安全
router.push({
name: ‘users-id‘,
params: { id: 123 }
})
- 路由名称拼写错误?编译阶段就会直接报错。
- 参数类型不匹配?TypeScript 会立即给出提示。
许多过去只能在运行时才能发现的错误,现在在编码阶段就能被 IDE 和编译器提前拦截,极大地提升了开发体验和代码健壮性。
默认懒加载,零心智负担
所有页面组件都会自动被转换为动态导入:
() => import(‘./pages/xxx.vue‘)
你无需手动编写异步组件,也不会忘记进行代码分割。这对应用性能和长期维护都更加友好。
官方方案,而非“社区插件”
这是最关键的一点:它不再是第三方社区插件,而是 Vue Router 官方核心的一部分。
这意味着:
- API 稳定性更高,遵循 Vue 官方的迭代节奏。
- 长期维护有保障,与 Vue 生态深度绑定。
- 会与 Vue、Vite、TypeScript 等工具链进行深度协同和优化。
对于中大型企业级项目而言,采用官方支持的核心方案,在稳定性和可持续性上无疑更具优势。
Vue Router 5 在借鉴谁?
如果你觉得这些特性似曾相识,这很正常:
- 文件即路由:灵感来源于 Nuxt 和 Next.js。
- 类型安全:吸收了如 Remix 等现代框架的设计思想。
- 构建期生成:契合了以 Vite 为代表的现代前端工具链的发展趋势。
但 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‘
export default {
plugins: [
VueRouter(),
vue()
]
}
- 使用自动生成的路由:
import { createRouter, createWebHistory } from ‘vue-router‘
import { routes } from ‘vue-router/auto-routes‘
export const router = createRouter({
history: createWebHistory(),
routes
})
完成以上步骤,你就已经获得了:
- 文件即路由的自动化能力。
- 页面组件的自动懒加载。
- 路由参数的类型安全。
而且,你不需要对任何现有的业务页面组件进行修改。
新项目:直接拥抱“未来模式”
如果是全新的项目,建议直接采用以下实践:
- 使用
src/pages 目录来规划路由。
- 放弃手写
routes 配置。
- 用清晰的文件结构来表达业务模块结构。
这几乎能让你体验到与 Nuxt 类似的路由开发体验,同时保持纯粹的 Vue.js 项目架构。
渐进式迁移,完全可行
你甚至可以采取混合模式:
- 旧的
routes 配置继续使用。
- 新增的页面采用文件路由方式。
- 逐步、按需地迁移历史遗留部分。
Vue Router 5 的设计思路清晰而包容:不强推、不破坏、允许新旧模式共存。
写在最后
虽然 Vue Router 5 尚未正式发布,但其演进方向已经非常明确。“路由自动化”与“类型安全” 已不再是“是否需要”的讨论,而是“何时全面采用”的问题。
可以预见的是,在下一个 Vue 项目中,你很可能会彻底告别手动编写路由配置的时代。这不仅是开发效率的提升,更是工程质量和开发体验的一次重要飞跃。如果你想了解更多关于此类前沿技术实践和官方文档的深度解析,可以关注 云栈社区,与更多开发者一同交流探讨。