首页 > 其他分享 >$route 和$router 的区别

$route 和$router 的区别

时间:2024-12-17 13:57:52浏览次数:7  
标签:区别 route 路径 params router 导航 路由

在 Vue.js 中,$route$router 是 Vue Router 提供的两个非常重要的对象,它们用于管理和操作路由。

1. $route 对象

  • 定义$route 是一个响应式的对象,它包含了当前激活路由的所有信息,例如路径、参数、查询字符串等。你可以把它看作是“当前路由快照”。

  • 常见属性

    • path: 当前路由的路径。
    • params: 动态路径参数(如 /user/:id 中的 id)。
    • query: URL 查询参数,以键值对形式存在。
    • hash: URL 中的哈希部分(即 # 后面的内容)。
    • name: 命名路由的名字。
    • matched: 匹配到的路由记录数组,每个记录包含组件配置等信息。
    • fullPath: 完整的路径,包括查询参数和哈希。
      console.log(this.$route.path); // 打印当前路径
      
      console.log(this.$route.params.id); // 打印动态路径参数 id
  • $route 的用途

  1. 读取路由信息:你可以使用 $route 来访问当前路由的各种信息,如路径 (path)、参数 (params)、查询字符串 (query) 等等。

  2. 动态组件渲染:根据 $route 中的数据(比如 nameparams),可以实现动态加载不同的组件或内容。

  3. 导航守卫:虽然 $route 本身不直接用于导航控制,但它可以在导航守卫(如 beforeEachbeforeEnter)中被用来判断是否允许用户进行特定的导航动作。

2. $router 对象

  • 描述$router 是路由器实例,是整个应用路由系统的管理者。
  • 方法:提供了如 push()replace()go()back()forward() 等方法来进行页面间的导航。
  • 配置:可以通过这个对象访问路由的配置信息,并且可以添加动态路由或者监听路由变化。
  • $router 的用途

  1. 编程式导航:利用 $router.push()$router.replace()$router.go() 等方法,你可以在代码中实现页面间的跳转。

  2. 修改历史记录:可以通过 $router 的方法向浏览器的历史栈中添加或替换记录。

  3. 监听路由变化:尽管通常我们会直接监听 $route 对象的变化,但 $router 提供了钩子函数(如 afterEach),这些钩子可以在每次导航完成后执行某些逻辑。

  4. 全局/局部导航守卫$router 允许设置全局或针对单个组件的导航守卫,以便在进入或离开某个路由之前执行特定的检查或准备工作。

// 导航到新页面
this.$router.push({ name: 'user', params: { userId: 123 } });

// 替换当前页面而不添加历史记录
this.$router.replace('/home');

// 返回上一页
this.$router.go(-1);

标签:区别,route,路径,params,router,导航,路由
From: https://blog.csdn.net/2301_79814793/article/details/144533544

相关文章

  • png-8和png-24有什么区别?
    png-8和png-24在前端开发中主要有以下区别:色彩深度:png-8:使用8位索引色,这意味着它最多只能展示256种颜色。因此,它更适合用于颜色较为单一的图像,如纯色、logo、图标等。由于颜色数量有限,png-8图像的文件体积通常会更小。png-24:使用24位色彩深度,可以展示的颜色数量远多于png-8,......
  • 说说display:flex和display:inline-flex有什么区别?
    在CSS中,display属性用于设置元素的显示类型。display:flex和display:inline-flex都是用于创建弹性盒子(flexbox)容器的值,但它们之间存在一些关键差异。块级与内联级行为:display:flex:将元素设置为块级弹性盒子。这意味着,该元素将像块级元素一样表现,独占一行,且其宽度默认填充......
  • css和wxss有什么区别?
    CSS(CascadingStyleSheets)和WXSS(WeiXinStyleSheets)在前端开发中各自扮演着重要的角色,它们之间存在一些显著的区别。以下是对这些区别的详细归纳:尺寸单位:WXSS引入了rpx(responsivepixel)这一尺寸单位,它能够根据屏幕宽度进行自适应调整。例如,在iPhone6上,1rpx等于0.5px。CSS......
  • java中VO ,O/R Mapper,PO,VO与PO区别,BO ,POJO,DAO,DTO,TO.QO,D
    一.对象分类:VO(ViewObject)视图对象:用于展示层,通常是Web页面,它从业务模型(BO)中取得数据并将数据展示给用户。VO通常包含了页面所需的所有数据,但不包含业务逻辑。O/RMapper(Object/RelationalMapping)对象/关系映射:这是一种程序设计技术,用于将对象模型映射到关系数据库模型......
  • 容器与虚拟机的区别与关系
    本文分享自天翼云开发者社区《容器与虚拟机的区别与关系》,作者:small倩什么是虚拟机技术?传统的虚拟机技术(VMware)将一组硬件虚拟化,在其上安装并运行一个完整的操作系统,然后在该系统上运行所需的应用进程;虚拟机就像一台主机。什么是容器?容器是一个应用层面的抽象,用于将代码和依赖......
  • linux shell中 " " 与 ' ' 有什么区别?
     创建文件[root@master-1~]#catpath.serviceC:\\ProgramFiles\\MyApp\qwe\\qq\\az需求:使用sed将\\替换为\执行sed命令,并使用双引号""[root@master-1~]#sed-i"s/\\\\/\\/g"path.servicesed:-e表达式#1,字符8:未终止的“s”命令执行sed命令,并......
  • 常见UT框架的适用场景和区别
    框架适用场景核心区别JUnitJava应用程序的基本单元测试框架,适用于大多数Java单元测试场景。提供注解支持,简化测试用例的编写和执行,集成广泛的IDE支持。JMock用于Java的行为驱动开发(BDD),适用于需要模拟对象行为的测试场景。专注于行为驱动开发,使用模拟对象来验......
  • 【多线程】start 和 run 区别,终止线程,等待线程
    Thread类使用start方法,启动一个线程,对于同一个Thread对象来说,start只能调用一次!!!不怕名字起的长,就怕含义不清楚!想要启动更多线程,就是得创建新的对象!!!调用start创建出新的线程,本质上是start会调用系统的api,来完成创建线程的操作。start和run的区别(重点):终......
  • js中Iterable对象和Array有什么区别?
    在JavaScript中,Iterable对象和Array都是可以用来遍历的数据结构,但它们之间存在一些关键的区别。1.定义和本质Iterable:在JavaScript中,Iterable是一个接口,表示任何对象都可以被遍历。如果一个对象实现了Symbol.iterator方法,那么它就被认为是Iterable的。Iterable本身并不是一个......
  • Promise和setTimeout执行先后有什么区别?
    在前端开发中,Promise和setTimeout都是处理异步操作的重要工具,但它们之间有一些关键的区别,这些区别会影响它们的执行顺序和如何处理异步逻辑。事件循环与任务队列:JavaScript运行在单线程环境中,通过事件循环(EventLoop)来处理同步和异步任务。同步任务直接执行,而异步任务会......