当前位置: 首页 > news >正文

Vue:路由route

一、概念

1、组成

每一个路由都由 key value 组成。 key+value===路由 route。

2、本质

路由的本质:一个路由表达了一组对应关系。路由器的本质:管理多组对应关系。

3、路由的工作原理

点击之后路径变化——>路由器监视到变化——>根据路径匹配路由——>完成切换

4、路由器的工作原理

不停的监视路径的变化,只要路径变化,路由器就会找到相应的路由,完成切换。

二、简单使用形式

1、安装 vue-router

安装vue-router插件:npm i vue-router@3。

2、main.js 中引入并使用 vue-router

导入:import VueRouter from 'vue-router',使用:Vue.use(VueRouter),

new Vue 时添加新的配置项:一旦使用了 vue-router 插件,添加一个全新的配置项:router。

import Vue from 'vue'
import App from './App.vue'Vue.config.productionTip = false//导入router插件
import VueRouter from 'vue-router'
//导入路由对象
import router from './router/index'
//使用插件
Vue.use(VueRouter)
new Vue({el: '#app',router: router,render: h => h(App)
})

3、使用路由

router 路由器的创建一般放在一个独立的 js 文件中

在独立的js中创建路由器对象,并且将其暴露。然后在 main.js 文件中引入该路由器即可。

//导插件
import VueRouter from "vue-router";
//导组件
import HB from '../components/HB'
import HN from '../components/HN'
import CZ from '../components/CZ'
import SJZ from '../components/SJZ'
// 创建路由
const router = new VueRouter({//配置多个路由routes: [{path: '/hb',component: HB,children: [{path: 'cz',component: CZ},{path: 'sjz',component: SJZ}]},{path: '/hn',component: HN}]
})
// 暴露路由
export default router

 4、在App.vue 中使用 router-link 标签代替 a 标签

<template><div><div><h1>省份</h1><ul><!-- 如果使用的是路由方式,就不能使用超链接a标签了,需要使用vue-router插件提供的一个标签 --><!-- router-link 将来会被自动编译为a标签。 --><li><router-link to="/hb" active-class="selected">河北省</router-link></li><li><router-link to="/hn" active-class="selected">河南省</router-link></li></ul></div><!-- 路由视图,其实就是起到一个占位的作用。 --><keep-alive :include="[HB, HN]"><router-view></router-view></keep-alive></div>
</template>

5、激活样式属性

使用 active-class 属性,在激活时添加样式,
        <li><router-link to="/hn" active-class="selected">河南省</router-link></li>

6、指定组件的存放位置

路由视图,起到占位的效果

<router-view></router-view>

7、路由组件的两个属性

$route:属于自己的路由对象。  $router:多组件共享的路由器对象。 

8、多级路由的使用

const router = new VueRouter({//配置多个路由routes: [{path: '/hb',component: HB,children: [{path: 'cz',component: CZ},{path: 'sjz',component: SJZ}]},{path: '/hn',component: HN}]
})

注意:children里面的path属性不能加“/”

9、路由query的传参

目的是提高代码复用性

路由对象中有一个query属性,这个query属性可以接收query方式传递过来的数据。

this.$route.query

①直接传参

<li><router-link to="/hebei/city?a1=长安区&a2=裕华区&a3=新华区" active-class="selected">石家    庄  </router-link>
</li>
<li><router-link to="/hebei/city?a1=新华区&a2=运河区&a3=东光区" active-class="selected">沧州    </router-link>
</li>

②采用query方式传参,字符串拼接方式

<li><router-link :to="`/hebei/city?a1=${sjz[0]}&a2=${sjz[1]}&a3=${sjz[2]}`" active-class="selected">石家庄</router-link>
</li>
<li><router-link :to="`/hebei/city?a1=${cz[0]}&a2=${cz[1]}&a3=${cz[2]}`" active-class="selected">邯郸</router-link>
</li> 
data() {return {sjz : ['长安区3', '裕华区2', '新华区2'],cz : ['运河区', '新华区', '东光区']}
},

③采用query方式传参,使用对象形式


<li><router-link active-class="selected" :to="{path : '/hebei/city',query : {a1 : sjz[0],a2 : sjz[1],a3 : sjz[2],}}"> 石家庄</router-link>
</li>
data() {return {sjz : ['长安区', '裕华区', '新华区'],cz : ['运河区', '新华区', '东光区']}
},

10、params传参

<li>params方式传参:字符串形式,写死的字符串 --><router-link active-class="selected" to="/hebei/sjz/裕华区/新华区/长安区">石家庄</router-link></li>
params方式传参:字符串形式,拼接字符串
<li><router-link active-class="selected" :to="`/hebei/sjz/${sjz[0]}/${sjz[1]}/${sjz[2]}`">石家庄</router-link>
</li>
params方式传参:对象形式
<li><router-link active-class="selected" :to="{// 强调:如果使用的是params方式传参,这里只能使用name,不能使用pathname : 'shi',params : {a1 : sjz[0],a2 : sjz[1],a3 : sjz[2],}}">石家庄</router-link>
</li>

11、路由的props

props 配置主要是为了简化 query params 参数的接收。让插值语法更加简洁。

①不是动态数据,将对象中的key和value通过props传给shi组件。

props : {x : '张三',y : '李四'
}
<li>{{x}}</li>
<li>{{y}}</li>
export default {props:["x","y"]    
}

②函数式方式

props($route){ return {a1 : $route.params.a1,a2 : $route.params.a2,}
}

注:$route将来会被自动传过来,它代表了当前的路由对象。变量名随意的。

<li>{{a1}}</li>
<li>{{a2}}</li>
export default {props:["a1","a2"]    
}

12、栈的存储方式

push模式(默认):以追加的方式入栈。replace模式:以替换栈顶元素的方式。

开启replace模式

<router-link :replace=”true”/>
<router-link replace />

13、缓存路由组件

默认情况下路由切换时,路由组件会被销毁。有时需要在切换路由组件时保留组件(缓存起来)
<keep-alive inclue=”组件名称”><router-view/>
</keep-alive>

 不写 include 时:<router-view>包含的所有路由组件全部缓存。多个路由采用数组形式。

14、两个钩子函数(activated 和 deactivated)

只有“路由组件”有这两个生命周期钩子函数。

路由组件被切换到的时候,activated 被调用。 路由组件被切走的时候,deactivated 被调用。

作用是捕获路由组件的激活状态。

三、路由守卫

1、全局前置守卫

router/index.js 文件中拿到 router 对象。
router.beforeEach((to, from, next)=>{<-- to from next --> 
})

to:是从哪来(to.path,to.name);from:从哪来,next:调用next()。

2、全局后置路由

router.afterEach((to, from)=>{ //每次后(寓意:每一次切换路由后执行。)// 没有 nextdocument.title = to.meta.title // 通常使用后置守卫完成路由切换时 title 的切换。
})
初始化时执行一次,以后每一次切换路由之后调用一次。

3、局部路由守卫之 path 守卫

                    beforeEnter(to, from, next){let loginName = 'admin'if(loginName === 'admin'){next()}else{alert('对不起,您没有权限!')}},

没有afterEnter

4、局部路由守卫值component守卫

进入路由组件之前,必须是路由组件才能触发,普通组件不触发。

beforeRouteEnter(to, from, next){console.log(city)next()},

离开路由组件之后,必须是路由组件才能触发,普通组件不触发。

beforeRouteleave(to, from, next){console.log(city)next()},
只有路由组件才有这两个钩子

相关文章:

Vue:路由route

一、概念 1、组成 每一个路由都由 key 和 value 组成。 keyvalue路由 route。 2、本质 路由的本质&#xff1a;一个路由表达了一组对应关系。路由器的本质&#xff1a;管理多组对应关系。 3、路由的工作原理 点击之后路径变化——>路由器监视到变化——>根据路径…...

Windows系统被faust勒索病毒攻击勒索病毒解密服务器与数据库解密恢复

在近期&#xff0c;一种名为faust后缀的勒索病毒威胁已经引起了全球计算机系统安全领域的关注。faust勒索病毒是一种基于RSA加密算法的恶意软件&#xff0c;能够加密目标计算机系统上的所有文件&#xff0c;并向用户勒索赎金来承诺解密恢复操作。下面为大家介绍一下Windows系统…...

Java面试题总结 | Java面试题总结7- Redis模块(持续更新)

Redis 文章目录 Redisredis的线程模型Redis的Mysql的区别Redis和传统的关系型数据库有什么不同&#xff1f;Redis常见的数据结构zset数据结构Redis中rehash过程redis为什么不考虑线程安全的问题呢Redis单线程为什么还能这么快&#xff1f;为什么Redis是单线程的&#xff1f;red…...

虹科案例 | 如何通过智能、非接触式测量解决方案,提高起重机的安全和效率?

PART 1 案例详情 自建造初期以来&#xff0c;起重机行业已经走了很长一段路。技术的使用在行业进步中发挥了重要作用&#xff0c;降低了使用桥式起重机的危险性。特别是&#xff0c;智能、非接触式测量解决方案通过使用高架升降机更安全、更高效、更高效&#xff0c;为行业的进…...

流程图拖拽视觉编程-流程编辑器

目录 一、简介 二、流程编辑器-视图实现 三、参考资料 一、简介 前期文章&#xff1a; 流程图拖拽视觉编程--概述_Jason~shen的博客-CSDN博客 本期内容&#xff1a; 本期将介绍流程编辑器模块的实现方法&#xff0c;效果图如下所示。该模块基于QT Graphics/View实现&…...

6.hashcode与equals区别与联系

1.hashCode介绍 hashCode() 的作用是获取哈希码&#xff0c;也称为散列码;它实际上是返回一个int整数。 这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中&#xff0c;这就意味着Java中的任何类都包含有hashCode() 函数。 2.equals介…...

智能家居“落地者”:三翼鸟用场景方案持续链接大众消费

互联网分析沙龙(techxue)原创 作者 &#xff5c; 锡海 编辑 &#xff5c; 七喜 从上海车展再到AWE2023展会&#xff0c;只要有大型活动的地方&#xff0c;都能看到人潮汹涌的景象&#xff0c;久违的烟火气又回来了。数据显示&#xff0c;社会消费已出现较为强劲反弹&#xff0…...

【MATLAB图像处理实用案例详解(12)】——利用BP神经网络实现图像压缩

目录 一、图像压缩二、BP神经网络实现图像压缩原理三、算法步骤3.1 图像块划分3.2 归一化3.3 建立BP神经网络3.4 保存结果 四、效果演示 一、图像压缩 常见的文件压缩软件如WinZip、WinRAR等采用的是无损压缩&#xff0c;能够完全恢复原文件内容。多媒体信息具有信息量大、冗余…...

java学习之枚举

目录 一、枚举引出 二、分析问题 三、 解决方案-枚举 四、枚举的二种实现方式 五、应用案例 六、小结 一、枚举引出 package enum_;public class Enumeration01 {public static void main(String[] args) {Season spring new Season("春天", "温暖")…...

IPsec中IKE与ISAKMP过程分析(主模式-消息2)

IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息1&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec协议族中IKE&#xff08;Internet Key Exchange&#xff09;是一种基于ISAKMP的协议&#xff0c;它为建立IPSec安全通信隧道提供了一种无痕密钥交换的机制。简单来说&#xff…...

KDZR-10A三相直流电阻测试仪

一、产品概述 直流电阻的测量仪是变压器、互感器、电抗器、电磁操作机构等感性线圈制造中半成品、成品出厂试验、安装、交接试验及电力部门预防性试验的项目&#xff0c;能有效发现感性线圈的选材、焊接、连接部位松动、缺股、断线等制造缺陷和运行后存在的隐患。 为了满足感…...

C语言入门篇——指针篇

目录 1、指针 1.1内存地址 1.2基地址 1.3指针变量 2、指针类型 2.1指针-整数 2.2指针的解引用 3、特殊指针 3.1野指针 3.2空指针 4、指针运算 4.1指针-指针 4.2指针的关系运算 5、指针和数组 6、二级指针 7、指针数组 1、指针 1.1内存地址 内存是电脑上特别重…...

Python小姿势 - Python学习笔记:如何使用Python创建一个简单的计算器

Python学习笔记&#xff1a;如何使用Python创建一个简单的计算器 在本教程中&#xff0c;我们将学习如何使用Python创建一个简单的计算器。我们将学习如何使用Python的内置函数input()和print()&#xff0c;以及如何使用Python的运算符来完成这个项目。 首先&#xff0c;让我们…...

庖丁解牛 - FLAME: Taming Backdoors in Federated Learning

文章目录 论文笔记 - FLAME: Taming Backdoors in Federated Learning1. 基本信息2. 研究动机3. 基本原理3.1 面临挑战分析3.2 FLAME 算法总体概述3.3 FLAME 算法设计思想3.3.1 Dynamic Model Filtering3.3.2 Adaptive Clipping3.3.3 Adaptive Noising4. 结论论文笔记 - FLAME:…...

C++设计模式20:状态模式

C++ 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式...

Embarcadero Delphi 11 和 C++Builder 11 免费社区版发布!

Embarcadero为Delphi和CBuilder的最新11.3版本提供了社区版许可证。这是Delphi或CBuilder的免费版本&#xff0c;适用于学生&#xff0c;业余爱好者和初创公司&#xff08;因为许可证仅对于收入有限的公司或个人&#xff09;。 什么是CE社区版&#xff1f; Delphi 和 CBuilde…...

JSP+Struct+MySql基于BBS管理系统设计与实现(源代码+论文+中英资料+开题报告+答辩PPT)

现今的社会是一个信息飞速发达的社会&#xff0c;其中在信息的交流当中&#xff0c;互联网占据着一个非常重要的位置。人们可以通过在互联网上收到最新的消息&#xff0c;也可以通过互联网进行信息的交流。而论坛就是大家进行信息交流的其中一个渠道。 论坛的概念&#xff1a;论…...

800字带你弄懂Http请求和响应

Hello ,我是小索奇&#xff0c;今天给大家分享一下计算机网络中的请求和响应&#xff0c;这些在javaWeb中也是必不可少的哈 HTTP介绍 HTTP是一种用于在Web应用程序之间传递数据的协议&#xff0c;HTTP请求和响应是客户端与服务器之间进行通信的基本单位。我们可以用一个生活中…...

【Java笔试强训 6】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;不要二 …...

2023年最新5A景区有多少个?Python可视化告诉你

2023年最新5A景区有多少个&#xff1f;Python可视化告诉你 五一小长假来了&#xff0c;很多人想抓住小长假的机会去旅游。 5A景区是大多数人的首选&#xff0c;全国最新有多少个5A景区呢&#xff0c;应该还有很多人不知道。本文用Python进行可视化&#xff0c;告诉你答案。 …...

C++中的list容器

文章目录 list的介绍list的使用list的构造list iterator的使用list capacitylist元素访问list modifierslist的迭代器失效 list与vector的对比 list的介绍 list是可以在常数范围内的任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代&#xff1b;   …...

Apache Hudi初探(二)(与spark的结合)

背景 目前hudi的与spark的集合还是基于spark datasource V1来的&#xff0c;这一点可以查看hudi的source实现就可以知道: class DefaultSource extends RelationProviderwith SchemaRelationProviderwith CreatableRelationProviderwith DataSourceRegisterwith StreamSinkPr…...

颠覆世界的“数字孪生”到底是什么?这篇文章带你搞懂全部内涵!

在春节很火的电影《流浪地球2》中&#xff0c;已经去世的小女孩图丫丫&#xff0c;被她的父亲重新将其个人的信息模型导入最强大的计算机而“复活”了。屏幕中的丫丫就是一个数字孪生体。我们可以看到她的一颦一笑&#xff0c;听到她跟你的对话&#xff0c;看到她做出反应。这就…...

Vector底层结构和源码分析

Vector的基本介绍 1.Vector类的定义说明 public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable 2)Vector底层也是一个对象数组&#xff0c;protected Objectl] elementData; 3)Vector是线程同步的&…...

计算卸载论文阅读01-理论梳理

标题&#xff1a;When Learning Joins Edge: Real-time Proportional Computation Offloading via Deep Reinforcement Learning 会议&#xff1a;ICPADS 2019 一、梳理 问题&#xff1a;在任务进行卸载时&#xff0c;往往忽略了任务的特定的卸载比例。 模型&#xff1a;针…...

Windows 11 本地 php 开发环境搭建:PHP + Apache + MySQL +VSCode 安装和环境配置

目录 前言1. PHP 的下载、安装和配置1.1 下载 php1.2 安装 php1.3 配置 php 系统变量1.4 配置 php.ini 2. Apache 的下载、安装和配置2.1 下载 Apache2.2 安装 Apache2.3 修改配置 Apache2.4 指定服务端口&#xff08;非必须&#xff09;2.5 配置系统变量2.6 安装服务2.7 Apach…...

15个使用率超高的Python库,下载量均过亿

今天给大家分享最近一年内PyPI上下载量最高的Python包。现在我们来看看这些包的作用&#xff0c;他们之间的关系&#xff0c;以及为什么如此流行。 1. Urllib3&#xff1a;8.93亿次下载 Urllib3 是 Python 的 HTTP 客户端&#xff0c;它提供了许多 Python 标准库没有的功能。 …...

所有知识付费都可以用 ChatGPT 再割一次?

伴随春天一起到来的&#xff0c;还有如雨后春笋般冒出的 ChatGPT / AI 相关的付费社群、课程训练营、知识星球等。 ChatGPT 吹来的这股 AI 热潮&#xff0c;这几个月想必大家多多少少都能感受到。 ▲ 图片来源&#xff1a;网络 这两张图是最近在圈子里看到的。 一张是国内各…...

Python中“is”和“==”的区别(避坑)

2.3 “is”和“”的区别 在Python编写代码时&#xff0c;经常会遇到需要判断2个对象是否相等的情况&#xff0c;这个时候一般就会想到使用is和&#xff0c;is和好像都可以用来判断对象是否相等&#xff0c;经常会傻傻分不清&#xff0c;但其实这其中还是有区别的。 不过在这之…...

20230426----重返学习-vue-router路由

day-058-fifty-eight-20230426-vue-router路由 vue-router路由 路由&#xff1a;切换页面&#xff0c;单页面应用上使用的 hash模式—锚点 对应vue版本 如何使用路由版本 vue2 —> router3vue3 —> router4 使用vue-router 创建项目的时候&#xff0c;直接选中路由…...