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

Vue中对路由的进阶学习

路由进阶

文章目录

  • 路由进阶
    • 1、路由的封装抽离
    • 2、声明式导航
      • 2.1、导航链接
      • 2.2、高亮类名
      • 2.3、跳转传参
      • 2.4、动态路由参数可选符
    • 3、Vue路由--重定向
    • 4、Vue路由--404
    • 5、Vue路由–模式设置
    • 6、编程式导航
      • 6.1、基本跳转
      • 6.2、跳转传参

路由基础入门

1、路由的封装抽离

问题:所有的路由配置都堆在main.js中合适么?

目标:将路由模块抽离出来。好处:拆分模块,利于维护

原本的写在main.js的代码:

image-20231010121608596

将路由的代码提取出来放在router文件夹下,并配置下列核心的操作:

image-20231010121252029

2、声明式导航

2.1、导航链接

需求:实现导航高亮效果

vue-router提供了一个全局组件router-link(取代a标签)

  1. 跳转,配置 to属性指定路径(必须)。本质还是a标签,to无需#
  2. 高亮,默认就会提供高亮类名,可以直接设置高亮样式

将a标签的代码进行替换:

image-20231010124004537

审查元素将新增的类改变属性:(router-link-exact-active 和 router-link-active)

image-20231010124059816

2.2、高亮类名

说明:我们发现router-link自动给当前导航添加了两个高亮类名(router-link-exact-active 和 router-link-active)

  1. router-link-ctive模糊匹配(用的多)

    to="/my"  => 可以匹配'/my'开头的所有路径,如/my,/my/a/...
    
  2. router-link-exact-active精确匹配

    to="/my"  =>  仅可以匹配/my
    

说明:router-link的两个高亮类名太长了,我们希望能定制怎么办?

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

上述操作相当于实现了自定义的类名,将两个高亮的类名进行自定义以达到简写或其他目的。

2.3、跳转传参

在跳转路由时,进行传值,有一下两种方式:

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

参数传递:

  <div class="hot-link">热门搜索:<router-link to="/search?key=程序员">程序员</router-link><router-link to="/search?key=前端培训">前端培训</router-link><router-link to="/search?key=如何成为前端大牛">如何成为前端大牛</router-link></div>

参数接收:

<template><div><p>搜索关键字: {{ $route.query.key }} </p></div>
</template>

使用传递过来的值:

<template><div><p>搜索关键字: {{ $route.query.key }} </p></div>
</template>
<script>
export default {created () {// 在created中,获取路由参数:// this.$route.query.参数名console.log(this.$route.query.key);//拿到值之后就发请求,然后渲染到页面}
}
</script>
  1. 动态路由传参

    1. 配置动态路由

      const router = new VueRouter({routes: [{ path: '/search/:参数名', component: Search }]
      })
      
    2. 配置导航链接

      • to=“/path/参数值”
    3. 对应页面组件接收传递过来的值

      • $route.params.参数名

参数传递:

    <div class="hot-link">热门搜索:<router-link to="/search/程序员">程序员</router-link><router-link to="/search/前端培训">前端培训</router-link><router-link to="/search/如何成为前端大牛">如何成为前端大牛</router-link></div>

参数接受:

<template><div><p>搜索关键字: {{ $route.params.words }} </p></div>
</template>

使用传递过来的参数:

<script>
export default {name: 'MyFriend',created () {// 在created中,获取路由参数// this.$route.query.参数名 获取查询参数// this.$route.params.参数名 获取动态路由参数console.log(this.$route.params.words);}
}
</script>

两种传参方式哪种要好一些:

  1. 查询参数传参((比较适合传多个参数)
  2. 动态路由传参(优雅简洁,传单个参数比较方便)

2.4、动态路由参数可选符

问题:配了路由path: "/search/:words”为什么按下面步骤操作,路径上没有参数,会未匹配到组件,显示空白?

在这里插入图片描述

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

解决:

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

3、Vue路由–重定向

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

说明:重定向匹配path后,强制跳转path路径

语法:{ path:匹配路径, redirect:重定向到的路径},

const router = new VueRouter({routes: [{ path: "/", redirect: "/home" },  // 在路径上只输了’/‘时,就会默认重定向到“/home”中]
})

4、Vue路由–404

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

位置:配在路由最后

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

const router = new VueRouter({routes: [{ path: "*",conponent:NotFound }, ]
})

5、Vue路由–模式设置

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

hash路由(默认) 例如: http://localhost:8080/#/home

history路由(常用) 例如: http://localhost:8080/home (以后上线需要服务器端支持)

实现:

const router = new VueRouter({routes:[{...}],mode: "history"  //一旦采用了history模式之后就没有#了,但是需要后台配置访问规则
})

6、编程式导航

6.1、基本跳转

需求:点击按钮跳转如何实现?

编程式导航:用JS代码来进行跳转

  1. path 路径跳转(简易方便)

    this.$router.push('路由路径')     //方式1this.$router.push({     //方式2path:'路由路径'
    })
    
  2. 通过命名路由的方式跳转 (需要给路由起名字) 适合path路径长的情况

    const router = new VueRouter({routes: [{ name: 'search', path: '/search/:words?', component: Search },]
    })
    
    this.$router.push({name: '路由名'
    })
    

    示例:

    <template><button @click="goSearch">搜索一下</button>
    </template><script>
    export default {name: 'FindMusic',methods: {goSearch () {// 1. 通过路径的方式跳转// (1) this.$router.push('路由路径') [简写]// this.$router.push('/search')// (2) this.$router.push({     [完整写法]//         path: '路由路径' //     })// this.$router.push({//   path: '/search'// })// 2. 通过命名路由的方式跳转 (需要给路由起名字) 适合长路径//    this.$router.push({//        name: '路由名'//    })this.$router.push({name: 'search'})}}
    }
    </script>
    

6.2、跳转传参

需求:点击搜索按钮,跳转需要传参如何实现?

两种传参方式:查询参数,动态路由传参

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

    query传参:

        (1)this.$router.push('路由路径') [简写]this.$router.push('路由路径?参数名=参数值')//跳转到其他页面接收:$router.query.参数名(2) this.$router.push({    // [完整写法] 更适合传参path: '路由路径'query: {参数名: 参数值,参数名: 参数值}})//跳转到其他页面接收:$router.query.参数名
    

    动态路径传参:

      this.$router.push({name: '路由名'query: { 参数名: 参数值 },params: { 参数名: 参数值 }})//跳转到其他页面接收:$router.params.参数名    (动态传参就需要配置路由,例如下列代码)
    // const router = new VueRouter({
    //   routes: [
    //     { name: 'search', path: '/search/:参数名?', component: Search }
    //   ]
    // })
    
  2. name命名路由跳转传参

    query传参:

     this.$router.push({name: '路由名'query: { 参数名: 参数值 }})//跳转到其他页面接收:$router.query.参数名
    

    动态路径传参:

     this.$router.push({name: '路由名'params: { 参数名: 参数值 }})
    //跳转到其他页面接收:$router.params.参数名    (动态传参就需要配置路由,例如下列代码)
    // const router = new VueRouter({
    //   routes: [
    //     { name: 'search', path: '/search/:参数名?', component: Search }
    //   ]
    // })
    

相关文章:

Vue中对路由的进阶学习

路由进阶 文章目录 路由进阶1、路由的封装抽离2、声明式导航2.1、导航链接2.2、高亮类名2.3、跳转传参2.4、动态路由参数可选符 3、Vue路由--重定向4、Vue路由--4045、Vue路由–模式设置6、编程式导航6.1、基本跳转6.2、跳转传参 路由基础入门 1、路由的封装抽离 问题&#x…...

Vuex的同步存值与取值及异步请求

前言 1.概念 Vuex是一个用于管理Vue.js应用程序中状态的状态管理模式和库。Vue.js是一个流行的JavaScript框架&#xff0c;用于构建用户界面&#xff0c;而Vuex则专门用于管理应用程序的状态&#xff0c;以确保状态在整个应用程序中保持一致和可维护。 2.Vuex的特点&#xf…...

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候&#xff0c;我们在谈论什么 js渲染网页&#xff0c;从某种程度来说&#xff0c;是指单纯的http请求&#xff0c;返回的文本数据&#xff0c;与我们在浏览器看到的内容&#xff0c;相距甚远.其可包括为以下几点&…...

智慧安防AI视频智能分析云平台EasyCVR加密机授权小tips

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…...

C# Windows 窗体控件中的边距和填充

可以将 Margin 属性、Left、Top、Right、Bottom 的每个方面设置为不同的值&#xff0c;也可以使用 All 属性将它们全部设置为相同的值。 在代码中设置Margin&#xff0c;元素的左边设置为5个单位、上边设置为10个单位、右边设置为15个单位和下边设置为20个单位。 TextBox myT…...

腾讯云2核4G轻量服务器5M带宽支持多少人同时在线?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;从CPU内存的角度&#xff0c;网站程序效…...

01 初识FPGA

01 初识FPGA 一.FPGA是什么 FPGA&#xff08;Filed Programmable Gate Array&#xff09;&#xff0c;现场可编程门阵列&#xff0c;一种以数字电路为主的集成芯片&#xff0c;属于可编程逻辑器件PLD的一种。 1.1 两大巨头 Xilinx(赛灵思)Altera&#xff08;阿尔特拉&#…...

设备巡检管理系统与隐患排查治理

如何才能将设备巡检做细做规范呢&#xff1f; 1.制定巡检制度和流程&#xff1a;通过建立明确的巡检制度和流程&#xff0c;并将其纳入企业的安全管理体系中。利用凡尔码平台制定一个详细的巡检计划&#xff0c;包括巡检的时间、地点、内容、检查方法和注意事项等&#xff0c;帮…...

linux之cpu模拟负载程序

工作中我们经常会遇到这样的问题&#xff0c;需要模拟cpu的负载程序&#xff0c;例如模拟cpu占有率抬升10%、20%、50%、70%等&#xff0c;那这样的程序应该如何实现呢&#xff1f;它的原理是什么样的呢&#xff1f; 思想 创建一个应用程序&#xff0c;该应用程序的作用可以根…...

zookeeper节点数据类型介绍及集群搭建

一、zookeeper介绍 zookeeper官网&#xff1a;Apache ZooKeeper zookeeper是一个分布式协调框架&#xff0c;保证的是CP&#xff0c;即一致性和分区容错性&#xff1b;zookeeper是一个分布式文件存储系统&#xff0c;文件节点可以存储数据&#xff0c;监听子文件节点等可以实…...

Spring: @ComponentScan注解,不设置basePackages时,为什么会扫描该注解所在的包?

ComponentScanAnnotationParser类的parse方法&#xff1a; 可以看到如果没配置basePackages&#xff0c;会调用ClassUtils的静态方法getPackageName将声明ComponentScan的类所在的包添加到basePackages中去...

DiffusionDet:第一个用于物体检测的扩散模型(DiffusionDet: Diffusion Model for Object Detection)

提出了一种新的框架——DiffusionDet&#xff0c;它将目标检测定义为一个从有噪声的盒子到目标盒子的去噪扩散过程。在训练阶段&#xff0c;目标盒从真实值盒扩散到随机分布&#xff0c;模型学会了逆转这个噪声过程。 在推理中&#xff0c;该模型以渐进的方式将一组随机生成的框…...

④. GPT错误:导入import pandas as pd库,存储输入路径图片信息存储错误

꧂ 问题最初꧁ 用 import pandas as pd 可是你没有打印各种信息input输入图片路径 print图片尺寸 大小 长宽高 有颜色占比>0.001的按照大小排序将打印信息存储excel表格文件名 表格路径 图片大小 尺寸 颜色类型 占比信息input输入的是文件就处理文件 是文件夹&#x1f4c…...

和鲸 ModelWhale 与华为 OceanStor 2910 计算型存储完成兼容性测试

数智化时代&#xff0c;数据总量的爆炸性增长伴随着人工智能、云计算等技术的发展&#xff0c;加速催化了公众对于数据存储与应用的多元化需求。同时&#xff0c;数据也是重要的基础资源和战略资源&#xff0c;需要严格保障其安全性、完整性。搭建国产数据基础设施底座&#xf…...

c++中单例模式的实现和问题

单例模式定义 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供了一个全局访问点来访问该实例。这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对…...

如何选购高效便捷的软件行业项目管理系统

如何选择一个高效便捷的软件行业项目管理系统&#xff1f;推荐一款好用的项目管理软件Zoho Projects&#xff0c;Zoho Projects是少数可以给客户开通权限的项目管理软件&#xff0c;相信Zoho Projects权限管理功能会受到题主的欢迎。有了这个功能&#xff0c;项目外的客户可以参…...

用“和美”丈量中国丨走进酒博物馆系列⑨

五粮液酒文化博览馆始建于1988年&#xff0c;是中国酒业最早的酒文化博览馆&#xff0c;于2020年启动升级改造。 现在我们看到的五粮液酒文化博览馆&#xff0c;采用了当今博览馆最前沿的展陈方式&#xff0c;展陈设计与空间布局更具灵动性和多元性&#xff0c;蕴含传统文化氛围…...

树莓派 Raspberry Pi 与YOLOv8 结合进行目标检测

文章大纲 使用树莓派摄像头 提供视频流前置文章libcamera树莓派安装与部署YOLOv8硬件需求 PrerequisitesYOLO Version: YOLOv5 or YOLOv8硬件的选择,树莓派5的YOLOv8支持呼之欲出,Hardware Specifics: At a GlanceYOLOv8 在树莓派上的配置与安装Install Necessary PackagesIn…...

centos 安装 percona-xtrabackup

一、yum安装 1.安装Percona yum存储库 yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm 2.启用Percona Server 8.0存储库 percona-release setup ps57 3.输出如下则安装成功 [rootlocalhost ~]# percona-release setup ps80 * Disabling all…...

机器学习1:k 近邻算法

k近邻算法&#xff08;k-Nearest Neighbors, k-NN&#xff09;是一种常用的分类和回归算法。它基于一个简单的假设&#xff1a;如果一个样本的k个最近邻居中大多数属于某一类别&#xff0c;那么该样本也很可能属于这个类别。 k近邻算法的步骤如下&#xff1a; 输入&#xff1a…...

Pixel Couplet Gen效果展示:抽象门神像素方块+动态卷轴交互演示

Pixel Couplet Gen效果展示&#xff1a;抽象门神像素方块动态卷轴交互演示 1. 项目概览 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成器。通过ModelScope大模型驱动&#xff0c;将传统春联创作转化为充满游戏感的数字体验。 核心特点&#xff1a…...

如何在ComfyUI中智能合成视频序列:VHS_VideoCombine节点的专业应用方案

如何在ComfyUI中智能合成视频序列&#xff1a;VHS_VideoCombine节点的专业应用方案 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 面对AI生成的大量图像序列&…...

像素幻梦·创意工坊应用场景:独立音乐人专辑封面像素艺术生成流程

像素幻梦创意工坊应用场景&#xff1a;独立音乐人专辑封面像素艺术生成流程 1. 引言&#xff1a;像素艺术在音乐视觉中的价值 在数字音乐时代&#xff0c;专辑封面依然是艺术家表达音乐理念的重要载体。对于独立音乐人而言&#xff0c;独特的视觉风格往往能成为作品的标志性符…...

如何将笔记从 iCloud 传输到 iPhone:分步指南

iPhone 上的“备忘录”应用是一款便捷的工具&#xff0c;可以用来记录待办事项、日记、想法等等。它能帮助我们追踪需要完成的事情。借助 iCloud 的自动同步功能&#xff0c;你的备忘录可以安全地存储在云端&#xff0c;并可通过任何 Apple 设备甚至电脑访问。将笔记从 iPhone …...

基于计算机视觉的AI头像质量评估系统

基于计算机视觉的AI头像质量评估系统 1. 引言 在数字社交时代&#xff0c;头像已经成为个人形象的重要代表。无论是社交平台、专业网站还是在线会议&#xff0c;一个高质量的头像都能显著提升个人形象和可信度。然而&#xff0c;如何快速评估头像的质量一直是个难题——什么样…...

Intv_AI_MK11嵌入式开发实战:在WSL2中部署AI模型并集成Keil5

Intv_AI_MK11嵌入式开发实战&#xff1a;在WSL2中部署AI模型并集成Keil5 1. 为什么选择WSL2进行嵌入式AI开发 对于嵌入式开发者来说&#xff0c;传统AI模型开发面临一个典型困境&#xff1a;训练环境通常基于Linux系统&#xff0c;而嵌入式开发工具链&#xff08;如Keil MDK&…...

2026实测不踩坑!6款成品PPT网站客观测评

2026实测不踩坑&#xff01;6款成品PPT网站客观测评作为常年深耕AI工具测评的博主&#xff0c;日常需应对各类PPT创作需求&#xff0c;也经常收到粉丝咨询相关工具选择。经过实测多款成品PPT网站后&#xff0c;整理出6款适配性较强的平台&#xff0c;涵盖不同需求场景&#xff…...

千问3.5-2B在办公提效场景:会议白板照片文字提取+要点总结实战

千问3.5-2B在办公提效场景&#xff1a;会议白板照片文字提取要点总结实战 1. 办公场景的痛点与解决方案 1.1 会议记录的传统困境 每次开完会&#xff0c;最让人头疼的就是整理会议记录了。特别是那些在白板上写满讨论要点的会议&#xff0c;你需要&#xff1a; 对着白板照片…...

PySide6新手必看:从零开始用Python玩转Qt界面开发(附官方教程对比)

PySide6新手必看&#xff1a;从零开始用Python玩转Qt界面开发 在Python生态中&#xff0c;GUI开发一直是个让人又爱又恨的话题。当Tkinter显得过于简陋&#xff0c;而PyQt又面临商业授权困扰时&#xff0c;PySide6作为Qt官方推出的Python绑定&#xff0c;正成为越来越多开发者的…...

Linux I2C设备驱动避坑指南:以MPU6050为例,详解i2c_transfer与数据读取失败

Linux I2C设备驱动深度调试&#xff1a;MPU6050通信稳定性问题全解析 当你在嵌入式系统中集成MPU6050传感器时&#xff0c;是否遇到过这样的场景&#xff1a;设备树配置正确&#xff0c;驱动代码逻辑清晰&#xff0c;但传感器数据读取却间歇性失败&#xff0c;内核日志中频繁出…...