Vue Router 是什么?它解决了什么问题?
Vue Router 是 Vue.js 的官方路由解决方案,专门用于构建单页应用(SPA)。它通过维护路由表,管理每个路由路径与组件的映射关系。在切换路由时,自动处理旧组件的失活和新组件的激活,实现页面流畅切换而无需刷新浏览器,显著提升用户体验和性能。
单页应用与多页应用的对比
单页应用(SPA)
整个应用只有一个 HTML 入口文件(通常是 index.html)。加载后通过 JavaScript 动态创建和渲染内容,用户点击导航时,监听客户端路由变化并局部更新 DOM。
- 特点:客户端渲染 + 前端路由
- 优点:交互体验好,服务端资源占用少,前后端分离开发效率高。
- 缺点:首屏加载相对较慢,SEO 不友好,内存占用较高(需注意泄漏)。
多页应用(MPA)
每个页面都有独立的 HTML 文件,每次导航都会向服务器发起请求获取对应页面。
- 特点:服务端渲染 + 服务端路由
- 优点:SEO 友好,首屏加载速度快。
- 缺点:页面切换体验不如 SPA 丝滑,服务器资源成本高,前后端耦合度高。
核心功能实现:动态、嵌套、懒加载与 404
动态路由
使用冒号定义参数,例如 { path: '/user/:id', component: User }。组件内部可通过 $route.params.id 获取参数值。
const routes = [
{ path: '/user/:id', component: () => import('./User.vue') }
];
注意:获取到的参数默认是字符串类型。如果需要数字,可以在组件内转换,或者更优雅地在路由配置中直接定义为 props。
const routes = [
{
path: '/user/:id',
component: UserComponent,
props: router => ({ id: Number(router.params.id) })
}
];
这样组件可以直接通过 props 接收数值,避免手动转换。
嵌套路由
通过路由配置中的 children 属性定义子路由。
const routes = [
{
: ,
: ,
: [
{ : , : },
{ : , : }
]
}
];


