vue中router与route区别


前言

vue-router中经常会操作的两个对象route和router两个。


一、$route对象

       $route对象表示当前的路由信息,包含了当前 URL 解析得到的信息。包含当前的路径,参数,query对象等。

在这里插入图片描述

  • $route.path 字符串,对应当前路由的路径,总是解析为绝对路径,如"/foo/bar"。

  • $route.params 一个 key/value 对象,包含了 动态片段 和 全匹配片段, 如果没有路由参数,就是一个空对象。

  • r o u t e . q u e r y 一 个 k e y / v a l u e 对 象 , 表 示 U R L 查 询 参 数 。 例 如 , 对 于 路 径 / f o o ? u s e r = 1 , 则 有 route.query 一个 key/value 对象,表示 URL 查询参数。 例如,对于路径 /foo?user=1,则有 route.querykey/valueURL/foo?user=1route.query.user == 1, 如果没有查询参数,则是个空对象。

  • $route.hash 当前路由的hash值 (不带#) ,如果没有 hash 值,则为空字符串。锚点*

  • $route.fullPath 完成解析后的 URL,包含查询参数和hash的完整路径。

  • $route.matched 数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。

  • $route.name 当前路径名字

  • $route.meta 路由元信息

    导航钩子的参数:
    router.beforeEach((to,from, next)=>{//to 和from都是 路由信息对象,后面使用路由的钩子函数就容易理解了})

二、$router对象

       $router对象是全局路由的实例,是router构造方法的实例。

在这里插入图片描述
路由实例方法:

1、push

  • 字符串this.$router.push(‘home’)
  • 对象this.$router.push({path:‘home’})
  • 命名的路由this.$router.push({name:‘user’,params:{userId:123}})
  • 带查询参数,变成 /register?plan=123this.$router.push({path:‘register’,query:{plan:‘123’}}) push方法其实和是等同的。

注意:push方法的跳转会向 history 栈添加一个新的记录,当我们点击浏览器的返回按钮时可以看到之前的页面。

2、go

  • 页面路由跳转
  • 前进或者后退this.$router.go(-1) // 后退

3、replace

  • push方法会向 history 栈添加一个新的记录,而replace方法是替换当前的页面,
  • 不会向 history 栈添加一个新的记录

4.一般使用replace来做404页面

  • this.$router.replace(’/’)
  • 配置路由时path有时候会加 ‘/’ 有时候不加,以’/'开头的会被当作根路径,就不会一直嵌套之前的路径。

<think>好的,用户想了解Vue.js中routerroute区别。首先,我需要回忆一下这两个概念的定义和用法。根据之前收集的资料,routerVue Router的实例,负责整个路由的控制,比如跳转、导航守卫等。而route则是当前激活的路由对象,包含当前URL的信息,比如路径、参数、查询等。 接下来,我需要确保回答的结构清晰,按照用户的要求分点说明。可能需要先分别解释routerroute各自的作用,再对比它们的区别,最后通过示例代码帮助理解。同时要注意使用中文,并正确应用引用标注。 还要检查是否有相关的引用资料支持。例如,引用[2]和[4]详细说明了$router和$route的不同,引用[3]提到了router的方法,比如go()。需要确保引用的内容准确,并在适当的位置添加引用标识。 另外,用户提供的示例中提到了代码块的使用,所以在回答中最好包含一些代码示例,比如在方法中如何使用$router.push,或者在计算属性中使用$route.params。这样可以让解释更具体。 可能会遇到的问题是如何简明扼要地说明两者的区别,避免混淆。需要强调router是全局的路由器,用于操作路由,而route是当前路由的信息源,用于获取数据。同时,可以举出实际应用场景,比如导航跳转和使用参数,来进一步说明两者的不同用途。 最后,生成的相关问题需要主题相关,比如使用方法、导航守卫、动态路由等,这些都能帮助用户深入理解Vue Router的相关知识。</think>### Vue.js中$router$route区别详解 #### 1. **$router(路由器)** - **定义**:`$router`是Vue Router的实例对象,负责管理整个应用的路由系统,提供路由跳转、导航守卫等全局操作方法[^2][^3]。 - **核心功能**: - 跳转到新路径:`this.$router.push('/path')` - 替换当前路径:`this.$router.replace('/new-path')` - 控制历史记录:`this.$router.go(-1)`(后退)或`this.$router.go(1)`(前进) - **应用场景**:编程式导航、全局路由拦截等。 #### 2. **$route(路由信息对象)** - **定义**:`$route`是当前激活的路由信息对象,包含URL解析后的参数、查询等数据,**只读**且组件实例绑定[^2][^4]。 - **关键属性**: - `path`:当前路径,如`/user/123` - `params`:动态路由参数,如`{ id: '123' }` - `query`:URL查询参数,如`?name=vue`解析为`{ name: 'vue' }`[^4] - **应用场景**:获取当前页面的参数、根据URL渲染内容。 #### 3. **对比总结** | 特性 | $router | $route | |---------------|----------------------------------|---------------------------------| | **作用** | 操作路由(跳转、控制导航) | 获取路由信息(参数、路径等) | | **数据性质** | 可调用方法 | 只读对象 | | **生命周期** | 全局单例 | 随路由切换变化 | #### 4. **代码示例** ```javascript // 使用$router跳转到用户详情页 methods: { navigateToUser() { this.$router.push({ path: `/user/${userId}` }); // 操作路由 } } // 使用$route获取当前用户ID computed: { currentUserId() { return this.$route.params.id; // 读取路由参数[^2] } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值