博客
关于我
$route 和 $router详解、区别、示例代码
阅读量:790 次
发布时间:2023-01-25

本文共 1566 字,大约阅读时间需要 5 分钟。

Vue.js 路由解析:$route 与 $router 的区别与使用场景

作为一名技术人员,今天我想系统地探讨 Vue.js 中与路由相关的两个核心概念:$route 和 $router。了解它们的区别及其使用场景,对于优化路由管理和应用性能极为重要。

$route 概述

$route 是一个只读属性,主要用于获取当前路由的状态信息。在大多数 Vue 应用中,这个属性会在使用 Vue Router 的时候频繁被使用。$route 的核心作用是提供路由信息的透明访问,帮助开发者获取路由参数、路径和查询参数等。

$route 的主要属性包括:

  • path: 当前路由的完整 URL 路径。
  • params: 动态路径参数对象,/:id 类型的路由参数会被存储在这里。
  • query: URL 查询参数对象,例如 page=1 这样的参数会出现在这里。
  • name: 当前路由的名称,可以通过在路由定义中设置 name 属性得到。
  • matched: 匹配路由记录的数组,每个记录包含组件信息。

代码示例:

created() {  console.log(this.$route.path); // 输出当前路由路径  console.log(this.$route.params.id); // 动态参数查看  console.log(this.$route.query.page); // 查询参数查看}

$router 概述

$router 是一个完整的 Vue Router 实例,它提供了路由管理的核心功能。这个实例包含导航、 路由缓存、 路由列表管理以及路由观察器等高级功能。$router 可以通过各种方法进行路由操作,如跳转、替换、历史记录管理等。

$router 的主要方法包括:

  • push(location): 跳转到指定位置。
  • replace(location): 跳转到新位置,并清空历史记录。
  • go(n): �.pagback 或前进若干步。
  • back(): 返回上一步,等价于 go(-1)
  • forward(): 前进一步,等价于 go(1)
  • watchRoute(callback):监听路由变化的回调函数。

代码示例:

methods: {  navigateToUserPage(id) {    this.$router.push({      name: 'user',      params: {        id      }    });  },  watchRouteChanges() {    this.$router.watchRoute((to, from) => {      console.log(`从 ${from.path} 到 ${to.path}`);    });  }}

两者区别

要区分 $route 和 $router 的关键在于它们的用途差异:

  • $route 是只读的,适用于获取当前路由的信息。
  • $router 是可写的,提供路由管理的功能,适用于导航和状态变化监听。

使用场景

根据需要选择使用 $route 还是 $router:

  • 若需要获取路由信息,使用 $route。
  • 若需要进行路由操作或监控路由变化,使用 $router。

举个实际例子,假设你正在开发一个用户详情页面。在 user/:id 路由中,你可能需要通过 $route 获取 id 参数,而如果你想跳转到其他页面或监控路由变化,则需要使用 $router。

总结

通过以上了解,你应该能够清楚地区分 $route 和 $router 的作用,并根据实际需求选择合适的路由操作方式。在实际开发中,$route 和 $router 可能会同时使用,特别是在需要导航和获取路由信息时。

转载地址:http://ikryk.baihongyu.com/

你可能感兴趣的文章
23张图告诉你组建一个网络需要用到哪些硬件设备?路由器、交换机、防火墙是不是就够了?
查看>>
24 WEB漏洞-文件上传之WAF绕过及安全修复_阿里云盾waf绕过怎么修复
查看>>
#12 btrfs文件系统
查看>>
#3194. 去月球
查看>>
24.线程
查看>>
#Leetcode# 28. Implement strStr()
查看>>
$route 和 $router详解、区别、示例代码
查看>>
$scope angular在controller之外调用
查看>>
&和&&的区别
查看>>
(215:断言失败)函数‘;DFT‘中的type==CV_32FC1||type==CV_32FC2||type==CV_64FC1||type==CV_64FC2;
查看>>
(AS3)BitmapData.draw比BitmapData.copyPixel能做得更多
查看>>
(discord.py) 有没有办法让 on_message 事件查看嵌入式消息而不是普通消息?
查看>>
064:vue+openlayers根据坐标来显示点、线段、圆形、多边形
查看>>
(ios实战)单个ViewControl适配不同ios版本xib文件实现
查看>>
(Leetcode-字符串-2) 字符串运算
查看>>
(type interface {}) to type string
查看>>
(zhuan) Evolution Strategies as a Scalable Alternative to Reinforcement Learning
查看>>
(五)java多线程之Lock类
查看>>
(十一) 构建dubbo分布式平台-dubbo简介
查看>>
(十一)JAVA springboot ssm b2b2c多用户商城系统 - SSO单点登录之OAuth2.0登录流程(2)
查看>>