26-2 vue-router

news2025/1/19 8:10:56

原始的方式好多东西需要我们自己去写,vue-router是一个集成好了的路由包,vue-router 官网 Vue Router | Vue.js 的官方路由

  • 并非原始的东西就不好,只要是包就可能存在版本兼容问题,如果是简单的需求就建议用原始的方法

目录

1  安装

2  挂载

3  基本使用

5  路由重定向

6  嵌套路由

7  默认子路由

7.1  重定向实现

7.2  将path值设为空实现

8  动态路由

8.1  基本使用

8.2  在组件中拿到动态值

8.2.1  $route对象

8.2.2  props

9  查询参数

10  编程式导航

10.1  跳转到指定的hash地址,并增加一条历史记录 this.$router.push()

10.2  跳转到指定的hash地址,并替换掉当前的历史记录 this.$router.replace()

10.3  前进或后退 this.$router.go()

10.4  后退到上一条历史记录 this.$router.back()

10.5  前进到下一条历史记录 this.$router.forward()

11  导航守卫

11.1  全局前置导航守卫基本使用

11.2  守卫方法的三个形参

11.3  next()

11.3.1  放行到指定路由

11.3.2  不放行


1  安装

2  挂载

vue-router不属于vue包本身的内容,所以需要挂载一下

vue2需要新建一个router文件夹,里面新建一个index.js

然后在index.js中写如下内容

然后在main.js中在vue对象中挂载到router属性上

vue3直接在main.js中挂载就行了

  • 我当前是vue-router 4.1.6 的挂载方式,不同版本挂载方式有可能不同

3  基本使用

后面用法大同小异,我这里单纯验证 vue-router 4.1.6 的用法,别的版本如果不好用就建议去看一下文档

router-view是vue-router中自带的组件,可以理解为组件的路由组件的占位符

打开后会访问到HOME组件

对地址栏进行修改后,其他的组件也可以访问到

4  router-link

router-link相当于a标签

打开后是这样的

点击不同的链接可以切换组件

5  路由重定向

如果你这样写,那么App.vue一开始是不加载任何组件的

因为没有组件符合规则,我们现在想在斜杠的时候加载HOME组件,那么我们可以将 / 重定向到 /home

这样打开后访问的url会是 http://localhost:8080/#/ ,由于我们做了重定向,所以自动跳转到 http://localhost:8080/#/home

6  嵌套路由

嵌套路由就是router-view展示的组件中也有一套路由

我们简单搞一下

  • 子路由的path不能加 / ,加上了会用不了

搞完之后发现可以在两个子路由之间切换

7  默认子路由

7.1  重定向实现

默认子路由就是给父级路由加上重定向

重定向后你点击about这个链接就会自动跳转到 /about/about1

7.2  将path值设为空实现

不建议使用这种方法

点击about后会默认显示ABOUT2组件

8  动态路由

有时候分页功能需要使用到动态路由,小说网站上有时可能会看到这样的路由 /page/1 /page/2 这种,就是通过url来操作页数

当数据量大的时候,我们不愿意手动去一个一个创建路由规则(模板可以循环,路由规则循环起来比较麻烦且看起来会很乱),这个时候我们就可以使用动态路由

8.1  基本使用

我们现在有多个电影,这多个电影我最终都想使用MOVIE组件(实际开发中也是这样的,电影页面的结构是一样的,但内容会根据路由的不同而不同)

现在我先不改变路由规则

  • router-link在实际开发中会根据请求的结果进行循环渲染

当你点击 电影1 的时候是匹配不到的

现在我将其改变为动态路由的规则

  • 冒号是固定的,后面的id是自定义的

点击 电影1 后发现可以匹配到了

点击 电影2 也没用问题

8.2  在组件中拿到动态值

8.2.1  $route对象

我们需要根据动态值做不同的请求,从而拿到不同的数据,我们可以通过 组件实例(this)中的$route中的params拿到动态值

我们看一下 $route 这个对象

点击 电影1,电影2,电影3 会触发beforeUpdate(),我们看一下这三个链接的内容

8.2.2  props

我依次点击了 电影1 电影2 电影3

9  查询参数

查询参数可以通过$route对象拿到

比如我在请求 /about/about1 的时候,要加入查询参数,我们就可以在$route中的query接到

10  编程式导航

之前我们使用的点击链接进行跳转页面叫做声明式导航,现在我们要用代码跳转页面,用代码跳转页面叫编程式导航

vue-router中有一个 $router 对象,我们的编程式导航基本上都对着这个对象进行操作

10.1  跳转到指定的hash地址,并增加一条历史记录 this.$router.push()

我们访问链接的顺序是这样的,首先打开一个浏览器,然后访问localhost:8080访问到这个页面

进来之后是这样的,这个时候已经可以后退了

点击按钮后可以跳转到 /about/about1 ,跳转之后可以后退

点击后退之后就会回到home

这一系列操作产生的历史记录是这样的 浏览器初始页面 -> home页面 -> /about/about1页面

10.2  跳转到指定的hash地址,并替换掉当前的历史记录 this.$router.replace()

我们还是按照上面的方式点击这个按钮

与push除了后退不同,剩下都一样,replace后退之后会直接退到浏览器初始页面

这一系列操作产生的历史记录是 浏览器初始页面 -> /about/about1页面(把home页面替换掉了)

10.3  前进或后退 this.$router.go()

go()中写数字,正数是前进,负数是后退,一般我们都是后退一个,所以是go(-1)

我们在ABOUT1.vue中加一个按钮做后退

我们在这里,使用push导航到 /about/about1

进入后点击返回按钮

发现可以成功返回

如果go()中的数值超过历史记录就原地不动

一般我们就是前进一条或后退一条,所以可以用下面两个方法,我就不做例子了

10.4  后退到上一条历史记录 this.$router.back()

10.5  前进到下一条历史记录 this.$router.forward()

11  导航守卫

有的页面我希望只有登录之后才可以让别人访问,那么这个时候我们就可以使用导航守卫。导航守卫就是限制用户访问某些地址

操作起来就是进入路由前前干点儿什么,进入路由后干点儿什么,可以将导航守卫理解为导航的钩子

导航守卫也分好几种,详情可以看一下这个 导航守卫有哪三种并且守卫的用法_-Schuyler的博客-CSDN博客

11.1  全局前置导航守卫基本使用

进入页面后,我们会触发一次重定向,这个时候就触发了一次全局前置导航守卫

之后我点击了一次电影2,点击后又触发了全局前置导航守卫

  • 打印出来的2是 电影2 中的方法,与导航守卫无关

11.2  守卫方法的三个形参

依次是

  1. to 到哪个url去
  2. from 从哪个url来
  3. next 如果可以放行就调用 next()

我们简单用一下

我们现在由这个链接进入 about

我们可以看到是从 /home 到 /about

在to,from两个对象中,你可以通过其中的query属性拿到传递的参数

11.3  next()

next()有三种放行结果

  • next() 正常放行
  • next('/login') next()中可以写路由,比如发现某一种条件未满足,就跳转到指定的url中。比如我想访问主页,但是还没登录,那么就跳转到登录页去
  • next(false) 不放行,用户点击导航后会停留在原地

11.3.1  放行到指定路由

我们简单用一下,比如我现在想 点击 /about 的时候就跳转到 /movie/1 其余照常

进来之后我点击一下 about

发现跳转到了 /movie/1

11.3.2  不放行

进来之后你点哪个路由也没用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何进行远程控制电脑

电脑在我们日常生活中的作用是非常大的,尤其是在信息时代地位非常高。 其中,最常见、最具代表性的功能是实现远程控制功能。它可以直接解决一些问题,而不需要去现场,在一定程度上提高了工作效率。但是有很多朋友不知道如何实现远…

边缘计算盒子有哪些?边缘计算应用场景

边缘计算(Edge Computing)是一种分布式计算模型,旨在将数据处理和计算功能从中心数据中心移到数据源附近的边缘设备上。它的目标是在接近数据生成的地方进行实时数据处理和分析,减少数据传输延迟和网络拥塞,提高应用程…

计算机图形学-GAMES101-2

Vectors向量 一、向量的介绍 表示一个方向。计算向量的方法:AB (B-A)。向量对应的单位向量 AB / ||AB|| 。向量具有平移性,我们不关心它的开始位置。向量求和:三角形法则和平行四边形法则。在代数上计算直接把向量的…

如何防止网站被黑客攻击?黑客是怎样炼成的?

现在的黑客网站可谓是多如牛毛,不管在哪里只要你愿意学,都可以学到一招半式。看过别人的个性签名:卖菜的王大妈是黑客,烤红薯的李大爷也是黑客,对面成人用品店的老板,挖日,还是黑客-_-~!..黑客还真多啊!!!据…

关于对自动化测试的理解:目的与本质!(新手必看)

其实自动化测试很好理解,由两部分组成,“自动化”和“测试”,所以我们要理解自动化测试,就必须理解“自动化”和“测试”,只有理解了这些概念,才能更轻松的做好的自动化测试。其中“自动化”可以想象成通过…

晶飞FLA5000光谱仪.FlaSpec格式解析批处理导出CSV文件

引言 首先说明下晶飞上位机软件存在的问题,实验所采用的FLA5000型号光谱仪,光谱波段从280-970nm,FWHM值为2.4nm。 1、上位机软件中的光谱数据复制功能基本是废的,最多只能到599.9nm,后面的数据全部消失。 2、上位机软…

2023系统分析师---软件工程、系统规划高频错题

系统规划---成本效益分析 评价信息系统经济效益常用的方法主要有成本效益分析法,投入产出分析法和价值工程方法。盈亏平衡法常用于销售定价; 可行性分析 系统规划是信息系统生命周期的第一个阶段,其任务是对企业的环境、目标以及现有系统的状况进行初步调查,根据企业目标…

示波器的数据处理怎么记录?

示波器的使用 - 记录和保存示波器测试结果 安泰测试为您分享如何记录示波器的数据。 "从您把示波器探头连接到器件的那一刻起,信号就开启了一次瞬间即可完成的重大旅程。它必须 跨过五个不同的“模块”,才能完成从器件到示波器,最后返回…

Vue电商项目--开发floor模块

获取floor组件mock数据 开发floor组件 在开发之前,说一下之前存在的一些小毛病 那就是在开发vue中还需要通过dom这种方式来操作元素吗? 我们用ref来做这个 我们先写api 然后去找仓库 getFloorList这个action在哪里触发,是需要在Home路由组件…

计算机组成原理硬件实验 - 计算机组成实验FAQ作业

一、 Quartus II 9.0 (32-Bit) 使用问题: Q1【示例】: 显示【未授权】或者【编译成功不能生成SOF文件】 A1: 在quartus中点击【TOOLS】→【license setup】,在license.DAT中修改“HOSTID”后的字段,设置为“你的电脑最新显卡ID” Q2【示例】…

怎么学习网络安全?这篇文带你从入门级开始学习网络安全

随着网络安全被列为国家安全战略的一部分,这个曾经细分的领域发展提速了不少,除了一些传统安全厂商以外,一些互联网大厂也都纷纷加码了在这一块的投入,随之而来的吸引了越来越多的新鲜血液不断涌入。 不同于Java、C/C等后端开发岗…

网络安全学什么

由于我之前写了不少网络安全技术相关的故事文章,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人在微信里问我: 我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选&#xff…

卷麻了,可别再为难软件测试人了

前言 有不少技术友在测试群里讨论,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些测试工程师了。 这不,为了帮大家节约时…

最“拼爹妈”的美国大学TOP10,什么是Legacy 录取?

Legacy的直译是遗产的意思,父母和大学的关系,就像家庭的遗产一样,可以传递给孩子一代(有时候,亲哥哥,亲姐姐也会被算作是 legacy)。有的大学祖父母如果是校友,也会算作 legacy。再远…

Docker部署配置Gitlab

Docker部署配置Gitlab 1 参考文档2 Gitlab相关介绍2.1 Gitlab2.2 Git和SVN的区别2.3 Git、Gitlab、GitHub的简单区别 3 搭建Gitlab仓库3.1 拉取镜像3.2 启动容器 4 修改配置文件并配置邮箱4.1 开放linux端口4.2 设置IP、端口4.3 配置邮箱4.4 让配置生效 5 管理员登录Gitlab6 创…

【输变电线路 JL-8C/12反时限电流继电器 报警信号、切除故障 JOSEF约瑟】

系列型号 JL-8C/11反时限电流继电器; JL-8C/12反时限电流继电器; JL-8C/12X反时限电流继电器; JL-8C/21-1反时限电流继电器; JL-8C/21-2反时限电流继电器; JL-8C/21-3反时限电流继电器; JL-8C/21-4反…

在线域名批量查询工具-在什么网站可以挖到老域名

怎么能挖掘到好域名 挖掘到好域名对于网站的建设和SEO排名是非常重要的,因为好的域名可以提高网站的置信度,增加自然引荐的数量,并且可以在搜索引擎排名中获得优势。下面介绍一些优秀的老域名挖掘方法,以及一种常用、免费的老域名…

verflow属性的常用值详解

什么是overflow 在CSS中,overflow是“溢出”的意思,该属性规定当内容溢出元素框时发生的事情,设置内容是否会被修剪,溢出部分是否会被隐藏;例如当属性值设置为“visible”则内容不会被修剪,为“hidden”则内…

PVT(Pyramid Vision Transformer)学习记录

引言与启发 自从ViT之后,关于vision transformer的研究呈井喷式爆发,从思路上分主要沿着两大个方向,一是提升ViT在图像分类的效果;二就是将ViT应用在其它图像任务中,比如分割和检测任务上,这里介绍的PVT&a…

【云原生】k8s 如何运行 Container?

文章目录 引语1、什么是 Pod1.1 简介1.2 Pod 怎样管理多个容器?1.3 如何使用 Pod? 2、Pod 基本操作2.1 查看 Pod2.2 创建 Pod2.3 删除 pod2.4 进入 Pod 中容器2.5 查看 Pod 日志2.6 查看 Pod 的描述信息 3、Pod 运行多个容器3.1 创建 Pod3.2 查看指定容器…