vue框架中的路由

news/2024/5/17 19:03:36

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.mrgr.cn/p/31003147

相关文章

VKL144C/D LQFP48/SSOP48仪器仪表超低功耗/超省电LCD液晶段码驱动IC适用于分贝仪、测光仪、测厚仪可驱动36SEGx4COM

VKL144C/D概述: VKL144C/D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的 LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通 过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表 类产…

196. 删除重复的电子邮箱【Problem:Every derived table must have its own alias】

SQL-Boy上线,最近在写SQL语句遇到了这样的问题。 Problem:Every derived table must have its own alias 错误语句如下 delete from Person where id not in (select id from (select min(id) as idfrom Person group by email));百度一波 【mysql解决方案】ERROR 1248 (4200…

[Python开发问题] Selenium ERROR: Unable to find a matching set of capabilities

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Occ求点到直线的距离

计算一个点到2d基本曲线的距离使用这个类Extrema_ExtPElC2d。距离可以是最小或者最大。 Extrema是极值的意思,P是point点,ELC是elementary curve基本曲线。点到直线的距离 假设一个点 Y 和一条直线 L直线 L 的参数形式为 $ X(t) = P + t\overrightarrow{d} $ // 式11. 先求…

vscode使用PasteImage插入图片

vscode使用PasteImage插入图片 需求 在vscode中写Markdown文件,经常需要插入图片,使用插件Paste Image进行简单配置后,就可以方便插入图片并自动存放到相应路径的文件夹中 安装及配置 安装从扩展商店搜索Paste Image并安装即可配置vscode设置中搜索Paste Image,找到Paste I…

【个人博客搭建】(3)添加SqlSugar ORM 以及Json配置文件读取

1、安装sqlsugar。在models下的依赖项那右击选择管理Nuget程序包&#xff0c;输入sqlsugarcore&#xff08;因为我们用的是netcore&#xff0c;而不是net famework所以也对应sqlsugarcore&#xff09;&#xff0c;出来的第一个就是了&#xff0c;然后点击选择版本&#xff0c;一…

【机器学习】三种基本损失函数

参考:“损失函数”是如何设计出来的?直观理解“最小二乘法”和“极大似然估计法”_哔哩哔哩_bilibili “交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵”_哔哩哔哩_bilibili 《信息论基础》三种基本损失函数任务:衡量人脑与神经网络…

Gartner 《2024安全和风险管理技术路线图》:高价值技术 DSP 进入广泛部署阶段

近期&#xff0c;Gartner 发布《2024年技术采用路线图&#xff1a;安全与风险管理》&#xff08;以下简称&#xff1a;《路线图》&#xff09;&#xff0c;该信息图表识别了全球企业正在采用的 44 种与安全相关的技术&#xff0c;并根据采用阶段、部署风险和企业价值进行了映射…

使用PL\SQL将Excel表格导入到oracle数据库中

因为要测试生产问题&#xff0c;需要把生产上oracle导出数据导入到测试环境oracle数据库中&#xff0c;尝试了N种方法&#xff0c;发现使用PL\SQL 的ODBC 方法比较好用 1、开始 首先使用plsqldev里面的&#xff0c;工具--》下面的odbc导入器 2、配置 点击之后&#xff0c;会…

Java项目调用 WebService

Java 项目调用 WebService序言:原本接触和二开的 Java 项目都是使用 Spring 框架,并且使用的接口都是 RestFul 风格,今天有一个 Kingdee 项目是使用 WSDL 文件提供接口通过 WebService 的方式来进行接口方式的相互通讯;因为是第一次使用 WebService 方式,所以写下这篇文档…

深入探索:Zookeeper+消息队列(kafka)集群

目录 前言 一、Zookeeper概述 1、Zookeeper概念 2、Zookeeper 特点 3、Zookeeper工作机制 4、Zookeeper 选举机制 4.1 第一次启动选举机制 4.2 非第一次启动选举机制 5、Zookeeper 数据结构 6、Zookeeper 应用场景 二、部署 Zookeeper 集群 1、环境部署 2、安装 z…

tailwindcss

Tailwind CSS 是一个为快速创建定制化 UI 组件而设计的实用型框架。与其他 CSS 框架或库不同,Tailwind CSS 组件没有预先设置好样式。可以使用 Tailwind 的低级实用类来为 CSS 元素设置样式,如 margin、flex、color 等。 自从 2017 年发布以来,Tailwind CSS 越来越受欢迎,因…

528. 奶酪(并查集orBFS)

题面如下: https://www.acwing.com/problem/content/530/大致思路是:合并所有连接的空洞,判断下表面的空洞和上表面的空洞是否是同一集合集合 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath>using…

NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生浦语2、InternLM2-SQL等)以及工业级案例教学

NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生浦语2、InternLM2-SQL等)以及工业级案例教学SQL实践系列(2):更多模型使用以及工业级案例 NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] …

DePT: Decoupled Prompt Tuning 论文阅读

DePT: Decoupled Prompt Tuning 了论文阅读 Abstract1. Introduction2. Methodology2.1. Preliminaries2.2. A Closer Look at the BNT Problem2.3. Decoupled Prompt Tuning 3. Experiments5. Conclusions 文章信息&#xff1a; 原文链接&#xff1a;https://arxiv.org/abs/…

Android中使用系统的签名打包

背景 正常开发一个Android软件项目,我们会生成一个签名文件,具体实现方式详见:项目签名 当我们开发一个系统级的app时,若apk已经集成到系统中,再想重新安装新包测试时一般会安装不上,提示签名不一致,原因是系统在整体编译时需要整体的来进行系统签名,当我们把新的apk往…

ddddocr基本使用和介绍

ddddocr基本使用和介绍 摘要:在使用爬虫登录网站的时候,经常输入用户名和密码后会遇到验证码,这时候就需要用到今天给大家介绍的python第三方库ddddocr,ddddocr是一款强大的通用开源ocr识别库,具有高效、准确、易用的特点,广泛应用于图像处理和文字识别任务。本文将为大家…

Redis几种常见的应用方式

1.登录认证 redis最常见的应用就是&#xff0c;登录认证把。再首次登录返回给前端token&#xff0c;把用户名和登录状态缓存到redis一段时间&#xff0c;每次其他请求进来过滤器那这token解析出来的用户名或其他关键的key值&#xff0c;再redis里面查询缓存&#xff0c;有则直…

【学习笔记】 字符串基础 : 后缀自动机(基础篇)

『祝祷转过千年/五色经幡飘飞/奏起悠扬巴叶/任岁月拨弦』本文只介绍关于 \(\mathbf{SAM}\) 的基本概念与实现 后缀自动机是什么 类似 \(\text{AC}\) 自动机,后缀自动机(\(\text{SAM}\)) 是能且只能接收字符串所有后缀的自动机 我们首先要知道,\(\mathbf{SAM}\) 是只能接收所有…

Java的六种线程状态及代码示例

Java的线程有6个状态,分别是 NEW 新建状态。刚new出来的thread,还没有调用start,就是这个状态 RUNNABLE 运行状态(分为运行中和就绪)。正在运行,或者等待CPU调度,调用完start,就是这个状态 BLOCKED 阻塞状态。还未竞争到的锁…