vue框架中的路由

vue框架中的路由

  • 一.VueRouter的使用(5+2)
  • 二.路由模块封装
  • 三.声明式导航 - 导航链接
    • 1.router-link-active类名
    • 2.router-link-exact-active类名
    • 3.声明式导航-自定义类名
  • 四.查询参数传参
  • 五.动态路由传参方式
    • 查询参数传参 VS 动态路由传参
  • 六.动态路由参数的可选符
  • 七.Vue路由-重定向
  • 八. Vue路由-404
  • 九.Vue路由-模式设置
  • 十.编程式导航-两种路由跳转方式
    • 1.path路径跳转语法
    • 2.name命名路由跳转
  • 十一、编程式导航-path路径跳转传参
    • 1. path路径跳转传参(query传参)
    • path路径跳转传参(动态路由传参)
    • 2.name 命名路由跳转传参 (query传参)
    • name 命名路由跳转传参 (动态路由传参)

Vue中路由:路径和组件的映射

一.VueRouter的使用(5+2)

固定5个固定的步骤
1.下载 VueRouter 模块到当前工程,版本3.6.5

yarn add vue-router@3.6.5

2.main.js中引入VueRouter

import VueRouter from 'vue-router'

3.安装注册

Vue.use(VueRouter)

4.创建路由对象

const router = new VueRouter()

5.注入,将路由对象注入到new Vue实例中,建立关联

new Vue({render: h => h(App),router:router
}).$mount('#app')

当我们配置完以上5步之后 就可以看到浏览器地址栏中的路由 变成了 /#/的形式。表示项目的路由已经被Vue-Router管理了

2 个核心步骤
创建需要的组件 (views目录),配置路由规则
在这里插入图片描述

配置导航,配置路由出口(路径匹配的组件显示的位置)

App.vue

<div class="footer_wrap"><a href="#/find">发现音乐</a><a href="#/my">我的音乐</a><a href="#/friend">朋友</a>
</div>
<div class="top"><router-view></router-view>
</div>

二.路由模块封装

在这里插入图片描述
在封装路由模块时要导出路由(这里指router,语法用export default)再挂载到main.js上

三.声明式导航 - 导航链接

需求:实现导航高亮效果
vue-router 提供了一个全局组件 router-link (取代 a 标签)
① 能跳转,配置 to 属性指定路径(必须) 。本质还是 a 标签 ,to 无需 #
② 能高亮,默认就会提供高亮类名,可以直接设置高亮样式
使用router-link跳转后,我们发现。当前点击的链接默认加了两个class的值 router-link-exact-activerouter-link-active

我们可以给任意一个class属性添加高亮样式即可实现功能
在这里插入图片描述

1.router-link-active类名

模糊匹配(用的多)
to=“/my” 可以匹配 /my /my/a /my/b …
只要是以/my开头的路径 都可以和 to="/my"匹配到

2.router-link-exact-active类名

精确匹配
to=“/my” 仅可以匹配 /my

3.声明式导航-自定义类名

router-link的两个高亮类名太长了,我们可以进行自定义

解决方案:
我们可以在创建路由对象时,额外配置两个配置项即可。 linkActiveClasslinkExactActiveClass

const router = new VueRouter({routes: [...],linkActiveClass: "类名1",linkExactActiveClass: "类名2"
})

四.查询参数传参

① 语法格式如下
to=“/path?参数名=值”
② 对应页面组件接收传递过来的值
$route.query.参数名

五.动态路由传参方式

配置动态路由
动态路由后面的参数可以随便起名,但要有语义

const router = new VueRouter({routes: [...,{ path: '/search/:words', component: Search }]
})

配置导航链接
to=“/path/参数值”

对应页面组件接受参数
$route.params.参数名

查询参数传参 VS 动态路由传参

  1. 查询参数传参 (比较适合传多个参数)
    1.跳转:to=“/path?参数名=值&参数名2=值”
    2.获取:$route.query.参数名

  2. 动态路由传参 (优雅简洁,传单个参数比较方便)

    1.配置动态路由:path: “/path/:参数名”
    2 跳转:to=“/path/参数值”
    3.获取:$route.params.参数名

注意:动态路由也可以传多个参数,但一般只传一个

六.动态路由参数的可选符

/search/:words 表示,必须要传参数。如果不传参数,也希望匹配,可以加个可选符"?"

const router = new VueRouter({routes: [...{ path: '/search/:words?', component: Search }]
})

七.Vue路由-重定向

1.问题
网页打开时, url 默认是 / 路径,未匹配到组件时,会出现空白

2.解决方案

重定向 → 匹配 / 后, 强制跳转 /home 路径

3.语法

{ path: 匹配路径, redirect: 重定向到的路径 },
比如:
{ path:'/' ,redirect:'/home' }

八. Vue路由-404

1.作用
当路径找不到匹配时,给个提示页面

2.位置
404的路由,虽然配置在任何一个位置都可以,但一般都配置在其他路由规则的最后面

3.语法

path: “*” (任意路径) – 前面不匹配就命中最后这个

import NotFind from '@/views/NotFind'const router = new VueRouter({routes: [...{ path: '*', component: NotFind } //最后一个]
})

九.Vue路由-模式设置

1.问题
路由的路径看起来不自然, 有#,能否切成真正路径形式?

  • hash路由(默认) 例如: http://localhost:8080/#/home
  • history路由(常用) 例如: http://localhost:8080/home (以后上线需要服务器端支持,开发环境webpack给规避掉了history模式的问题)

2.语法

const router = new VueRouter({mode:'histroy', //默认是hashroutes:[]
})

十.编程式导航-两种路由跳转方式

1.问题
点击按钮跳转如何实现?

2.方案
编程式导航:用JS代码来进行跳转

3.语法
两种语法:

  • path 路径跳转 (简易方便)
  • name 命名路由跳转 (适合 path 路径长的场景)

1.path路径跳转语法

特点:简易方便

//简单写法
this.$router.push('路由路径')//完整写法
this.$router.push({path: '路由路径'
})

2.name命名路由跳转

特点:适合 path 路径长的场景
语法:
路由规则,必须配置name配置项

{ name: '路由名', path: '/path/xxx', component: XXX },

通过name来进行跳转

this.$router.push({name: '路由名'
})

十一、编程式导航-path路径跳转传参

1.问题
点击搜索按钮,跳转需要把文本框中输入的内容传到下一个页面如何实现?

2.两种传参方式
1.查询参数
2.动态路由传参

3.传参
两种跳转方式,对于两种传参方式都支持:
① path 路径跳转传参
② name 命名路由跳转传参

1. path路径跳转传参(query传参)

//简单写法
this.$router.push('/路径?参数名1=参数值1&参数2=参数值2')
//完整写法
this.$router.push({path: '/路径',query: {参数名1: '参数值1',参数名2: '参数值2'}
})

接受参数的方式依然是:$route.query.参数名

path路径跳转传参(动态路由传参)

//简单写法
this.$router.push('/路径/参数值')
//完整写法
this.$router.push({path: '/路径/参数值'
})

接受参数的方式依然是:$route.params.参数值
注意:path不能配合params使用

2.name 命名路由跳转传参 (query传参)

this.$router.push({name: '路由名字',query: {参数名1: '参数值1',参数名2: '参数值2'}
})

name 命名路由跳转传参 (动态路由传参)

this.$router.push({name: '路由名字',params: {参数名: '参数值',}
})

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

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

相关文章

刷刷刷刷算法

链表 24. 两两交换链表中的节点 /*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} head* return {ListNode}*/ var swapPai…

javaWeb项目-毕业生就业信息管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、JSP技术 JSP(Jav…

【Canvas技法】四条C形色带填满一个圆/环形

【关键点】 通过三角函数计算控制点的位置。 【成果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>四条C形色带填满一个…

渐进式交付实践:通过 Argo Rollouts 和 FSM Gateway 实现金丝雀发布

渐进式交付&#xff08;Progressive delivery&#xff09;是一种软件发布策略&#xff0c;旨在更安全、更可控地将新版本软件逐步推出给用户。它是持续交付的进一步提升&#xff0c;允许开发团队在发布新版本时拥有更细粒度的控制&#xff0c;例如可以根据用户反馈、性能指标和…

【Docker】安装Redis、Nginx、MongoDb、Jenkins

1、安装redis mkdir -p /docker/redis mkdir -p /docker/redis/data touch /docker/redis/redis.conf touch /docker/redis/redis.bash编辑配置文件 vim /docker/redis/redis.conf # Redis配置文件# Redis默认不是以守护进程的方式运行&#xff0c;可以通过该配置项修改&…

css八股

伪类&#xff0c;伪元素 伪类&#xff1a; 1.指某种特定的行为或者状态&#xff0c;例如鼠标悬停&#xff0c;点击&#xff0c;第一个子元素等 2.以&#xff1a;开头&#xff0c;&#xff1a;hover&#xff0c;&#xff1a;focus 3.伪类不会形成新的元素&#xff0c;只会改…

柱层析SOP

1.TLC检测 尝试极性PE:EA的比值由5&#xff1a;1 到1&#xff1a;1&#xff0c;如若色谱上点未发生变化&#xff0c;再继续尝试极性DCM:MeOH由5&#xff1a;1 到 1&#xff1a;1。 但需保证各点的Rf分布在0.1到0.9之间。 PE:石油醚 EA&#xff1a;乙酸乙酯 DCM&am…

【论文阅读】YOLO-World | 开集目标检测

Date&#xff1a;2024.02.22&#xff0c;Tencent AI Lab&#xff0c;华中科技大学Paper&#xff1a;https://arxiv.org/pdf/2401.17270.pdfGithub&#xff1a;https://github.com/AILab-CVC/YOLO-World 论文解决的问题&#xff1a; 通过视觉语言建模和大规模数据集上的预训练来…

ruoyi-nbcio-plus基于vue3的flowable的消息中心我的消息的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

Python数据可视化:散点图matplotlib.pyplot.scatter()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 Python数据可视化&#xff1a; 散点图 matplotlib.pyplot.scatter() 请问关于以下代码表述错误的选项是&#xff1f; import matplotlib.pyplot as plt x [1, 2, 3, 4, 5] y [2, 3, 5, 7,…

热塑性聚氨酯TPU的特性有哪些?UV胶水能够粘接热塑性聚氨酯TPU吗?又有哪些优势呢?

热塑性聚氨酯&#xff08;Thermoplastic Polyurethane&#xff0c;TPU&#xff09;是一种具有多种优异性能的弹性塑料&#xff0c;广泛用于各种应用领域。以下是TPU的一些主要特性&#xff1a; 弹性和柔软性&#xff1a; TPU具有良好的弹性和柔软性&#xff0c;能够在受力后迅速…

JVM复习总结2024.4.18(很重要)

一、 1. 基于JDK1.8的String intern()方法解析 intern方法 1.8&#xff1a; 调用字符串对象的intern方法&#xff0c;会将该字符串对象尝试放入到串池中 如果串池中没有该字符串对象&#xff0c;则放入成功如果有该字符串对象&#xff0c;则放入失败 无论放入是否成功&#xff…

数据库-Redis(18)

目录 86.Redis 分布式锁的实现?什么是RedLock? 87.Redis缓存有哪些问题,如何解决? 88.Redis性能问题有哪些,如何分析定位解决?

短视频批量采集提取软件|视频下载工具

短视频批量采集提取软件&#xff1a;高效获取视频资源 一、开发背景 在日常业务中&#xff0c;我们经常需要获取大量的短视频资源&#xff0c;以支持各种需求&#xff0c;但传统的获取方式过于繁琐&#xff0c;一一复制链接下载效率低下。基于此需求&#xff0c;我们开发了一…

Jenkins机器已经安装了ansible, 运行的时候却报错ansible: command not found

操作系统&#xff1a;MacOS Jenkins log提示 ansible: command not found 直接在Jenkins 机器中&#xff0c;进入一样的目录执行ansible --version OK 原因&#xff1a; Jenkins 默认使用的环境是 /usr/bin, 而我的ansible 安装配置在conda3 下面&#xff0c;所以需要在Jenkin…

【工位ubuntu的配置】补充

软件 安装桌面图标的问题 登录密码 root的密码为&#xff1a;19980719 按照如下的链接进行配置&#xff1a; https://blog.csdn.net/zhangmingfie/article/details/131102331?spm1001.2101.3001.6650.3&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7E…

Meta发布新AI模型Llama 3,包含80亿和700亿参数

据Odaily星球日报报道&#xff0c;Meta旗下AIatMeta官方在X平台发文&#xff0c;Meta正式发布了包括80亿参数和700亿参数在内的2个新AI模型Llama 3。这些模型实现了新功能&#xff0c;如改进的推理能力&#xff0c;并为特定模型设定了新的最先进水平。在未来几个月&#xff0c;…

opencv图像转QPixmap格式图像后无彩色且中间有一条黑线

背景 自己使用PyQt5开发了一个界面&#xff0c;需要在界面的某个标签上显示opencv-python处理后的图像&#xff0c; 原来使用的代码段如下&#xff1a; img_rgb cv2.cvtColor(cvimage, cv2.COLOR_BGR2RGB)cv2.imwrite(2.jpg,img_rgb)qimg QImage(img_rgb.data, img_rgb.shape…

工业控制(ICS)---modbus

Modbus Modbus&#xff0c;市场占有率高、出题频率高,算是最常见的题目&#xff0c;因为这个协议也是工控领域最常见的协议之一&#xff0c;主要有三类 Modbus/RTU 从机地址1B功能码1B数据字段xBCRC值2B 最大长度256B&#xff0c;所以数据字段最大长度252B Modbus/ASCII …

DFS之剪枝2

给定两个整数 n , x n,x n,x。 你可以对 x x x 进行任意次以下操作&#xff1a; 选择 x x x 的一位数字 y y y&#xff0c;将 x x x 替换为 x y x \times y xy。 请你计算通过使用上述操作&#xff0c;将 x x x 变为一个 n n n 位数字&#xff08;不含前导 0 0 0&…