在 Vue Router 中,Route
和 Router
是两个相关但完全不同的概念:
1、Router (路由实例)
定义:
Router
是路由器的实例,负责整个应用的路由管理功能:
管理路由映射表(路由配置)
提供编程式导航方法(如
push
,replace
,go
)监听 URL 变化
匹配路由组件
获取方式:
import { useRouter } from 'vue-router' const router = useRouter()
常用方法:
router.push(
'/path')
// 跳转到新路由(添加历史记录)router.replace(
'/path')
// 替换当前路由(不添加历史记录)router.go(-1)
// 后退一步router.back()
//后退一步router.forward()
//前进一步
2、Route (路由)
定义:
Route
是当前激活的路由对象,表示当前的路由状态功能:
包含当前路由的信息
提供访问当前路由参数、查询参数、hash等
获取方式:
import { useRoute } from 'vue-router' const route = useRoute()
常用属性:
route.path
//当前路由路径(如 "/path/1002")route.params
//动态路由参数(如 { name: 'zhangsan' })route.query
- URL 查询参数如 ?id=1002=> { id: '1002' })route.hash
- URL 的 hash 部分(如 #home)route.name
- 路由名称(如果有定义)route.matched
- 当前匹配的路由记录数组
3、简单对比
特性 | Router | Route |
---|---|---|
类型 | 路由管理器(主动控制导航) | 当前路由信息(被动反映状态) |
用途 | 控制路由跳转 | 获取当前路由信息,参数、查询、路径等 |
修改 URL | 可以(通过 push /replace ) |
只读 |
响应式 | 非响应式对象 | 响应式对象(自动更新) |
获取方式 | useRouter() 或 this.$router |
useRoute() 或 this.$route |
典型使用 | 编程式导航 | 访问路由参数、查询参数等 |
4、示例
import { useRouter, useRoute } from 'vue-router'
export default {
setup() {
const router = useRouter() // 路由器实例
const route = useRoute() // 当前路由对象
function navigate() {
// 使用 router 进行导航
router.push({ name: 'user', params: { id: 123 } })
}
// 使用 route 访问当前路由信息
const userId = route.params.id
return { navigate, userId }
}
}
5、总结
Router
是"做"路由跳转的,而 Route
是"读"当前路由信息的。