vue-路由(六)

阅读文章你可以收获什么?

1 明白什么是单页应用

2 知道vue中的路由是什么

3 知道如何使用vueRouter这个路由插件

4 知道如何如何封装路由组件

5 知道vue中的声明式导航router-link的用法

6 知道vue中的编程式导航的使用

7 知道声明式导航和编程式导航式如何传递参数的?


单页应用程序-Single Page Applicatio

什么是单页应用程序?

单页面应用(SPA): 所有功能在 一个html页面 上实现

具体示例: 网易云音乐 https://music.163.com/

单页应用程序与多页应用的对比

单页面应用:系统类网站 / 内部网站 / 文档类网站 /移动端站点

多页应用:公司官网 / 电商类网站

路由概念

为什么需要路由

单页面应用程序,之所以开发效率高,性能高,用户体验

最大的原因就是:页面按需更新

要按需更新,首先就需要明确:访问路径 和 组件的对应关系!

访问路径 和 组件的对应关系如何确定呢? 路由 

路由的介绍(要点概念)

生活中的路由:设备和ip的映射关系

Vue中路由路径 和 组件 的 映射 关系 

 如何在vue中使用路由呢?这就需要使用到一个已经封装好的组件VueRouter来实现了

V

VueRouter入门 (路由)

VueRouter 的 介绍

作用:修改地址栏路径时,切换显示匹配的组件

说明:Vue 官方的一个路由插件,是一个第三方包

官网:https://v3.router.vuejs.org/zh/

小知识:

vue2 3 3         解析:vue2使用的路由版本是3开头的,使用的vuex(数据存储仓库)也是3开头的

vue3  4 4        解析:vue3使用的路由版本是4开头的,使用的vuex也是4开头的

VueRouter 的 使用 (5 + 2)

5个基础步骤 (固定)

① 下载: 下载 VueRouter 模块到当前工程,版本3.6.5

npm i vue-router@3.6.5

② 引入

 import VueRouter from 'vue-router'

 ③ 安装注册

Vue.use(VueRouter)

④ 创建路由对象

const router = new VueRouter()

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

 2 个核心步骤

① 创建需要的组件 (views目录),配置路由规则

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

 小结:到这里就完成了路由的基本使用了,但在日常开发中我们一般都会将路由封装起来使用,这样便于管理,后面会详解讲解

1   声明一个index.js文件,里面写了导入路由的相关代码

import Vue from 'vue'
import VueRouter from "vue-router";
import Layout from '@/views/Layout'
import ArticleDetail from '@/views/ArticleDetail'
import Article from '@/views/Article'
import Like from '@/views/Like'
import User from '@/views/User'
import Collect from '@/views/Collect'
Vue.use(VueRouter)const router = new VueRouter({routes: [// 一级路由{path: '/' ,component: Layout,redirect: '/article',// 二级路由children: [{path: '/article' ,component: Article},{path: '/like' ,component: Like},{path: '/user' ,component: User},{path: '/collect' ,component: Collect},]},{path: '/detail' ,component: ArticleDetail}]
})export default router

2 将封装的路由注册到mian.js的全局的Vue中

import Vue from 'vue'
import App from './App.vue'
import router from './router'Vue.config.productionTip = falsenew Vue({render: h => h(App),router
}).$mount('#app')

组件目录存放问题

注意:.vue文件 本质无区别。

路由相关的组件,为什么放在 views 目录呢? 组件分类

 

组件分类: .vue文件分2类; 页面组件 & 复用组件         注意:都是 .vue文件 

为什么放在 views 目录呢? 

分类开来 更易维护

  • src/views文件夹

        页面组件 - 页面展示 - 配合路由

  • src/components文件夹

        复用组件 - 展示数据

路由进阶(重点)

① 路由模块封装

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

显示这里不合适的,为了利于后期的维护,我们需要将路由模块封装起来使用

② 声明式导航 (router-link

声明式导航 - 导航链接

需求:实现导航高亮效果

 思考:像图中标签的高亮效果如何实现呢?

显然,像图中的高亮效果,我们以前在学习js时就经常遇见过,使用传统的js的代码也可以实现,但在vue有一种更好的方式去实现它

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

① 能跳转,配置 to 属性指定路径(必须) 。本质还是 a 标签 ,to 无需#

② 能高亮,默认就会提供高亮类名,可以直接设置高亮样式

 导航高亮

为什么这个router-link可以实现高亮呢?

查看代码:我们发现 router-link 自动给当前导航添加了 两个高亮类名

 精确匹配&模糊匹配

 自定义高亮类名

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

声明式导航传参 

1. 查询参数传参

        ① 语法格式如

                to="/path?参数名=值"

        ② 对应页面组件接收传递过来的

                $route.query.参数名

2. 动态路由传参 

        ① 配置动态

        

        ② 配置导航链接 

                to="/path/参数值"

        ③ 对应页面组件接收传递过来的

                $route.params.参数名

两种传参方式的区别 

动态路由参数可选符 

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

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

③ 路由重定向 / 路由404 / 路由模式

路由重定向(redirect)

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

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

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

 路由404

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

位置:配在路由最后

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

效果 

 路由模式

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

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

④ 编程式导航

编程式导航 - 基本跳转

场景:点击按钮跳转如何实现?

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

两种语法:

① path 路径跳转

② name 命名路由跳转

① path 路径跳转 (简易方便)

② name 命名路由跳转 (适合 path 路径长的场景) 

 编程式导航 - 路由传参

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

两种跳转方式,对于两种传参方式都支持:

① path 路径跳转传参

② name 命名路由跳转传参

① path 路径跳转传参

query传参

 接收:

动态路由传参

② name 命名路由跳转传参

query传参

接收:

动态路由传参 

小结:

1. path 路径跳转

2. name 命名路由跳转 

案例:面经基础版 

 组件缓存 keep-alive

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

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

相关文章

代码随想录算法训练营第33天| Leetcode1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

文章目录 Leetcode 1005.K次取反后最大化的数组和Leetcode 134. 加油站Leetcode 135. 分发糖果 Leetcode 1005.K次取反后最大化的数组和 题目链接:Leetcode 1005.K次取反后最大化的数组和 题目描述: 给你一个整数数组 nums 和一个整数 k ,按…

动态规划之编辑距离(接上一个题)

给定 n 个长度不超过 1010 的字符串以及 m 次询问,每次询问给出一个字符串和一个操作次数上限。 对于每次询问,请你求出给定的 n 个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。 每个对字符串进行的单个字符的插入、删除…

根据三维点坐标使用matplotlib绘制路径轨迹

需求:有一些点的三维坐标(x,y,z),需要绘制阿基米德螺旋线轨迹图。 points.txt 0.500002, -0.199996, 0.299998 0.500545, -0.199855, 0.299338 0.501112, -0.199688, 0.298704 0.501701, -0.199497, 0.298…

Qt使用单例模式读取xml文件

Qt使用单例模式读取xml文件 一、单例模式介绍1、什么是单例模式2、为什么使用单例模式3、什么情况下使用单例模式4、使用单例模式需要注意哪些问题线程安全 5、单例模式的类型6、单例类的特点 2、单例模式的实现2.1懒汉式2.2饿汉式 一、单例模式介绍 1、什么是单例模式 单例模…

在Linux系统中设置HTTP隧道以实现网络穿透和端口转发

在数字化世界中,网络穿透和端口转发成为了许多开发者和系统管理员必备的技能。而在Linux系统中,通过设置HTTP隧道,我们可以轻松实现这一目标,让我们的服务即便在内网环境中也能被外部世界所访问。 那么,如何在Linux系…

一文搞懂设计模式—观察者模式

本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 文章目录 使用场景实现方式Java对观察者模式的支持Guava对观察者模式的支持Spring对观察者模式的支持 优缺点 观察者模式(Observer Pattern)是一种…

小型洗衣机哪个牌子质量好?小型洗衣机十大排名

清洗内衣内裤这些贴身衣物确实是一件比较头疼的事,有的小伙子由于工作的劳累通常在洗完澡后并不喜欢直接清洗内衣内裤,会存上几天再扔到洗衣机里,这样做是很不可取的,因为穿过的内裤很久不洗就会滋生细菌,另外&#xf…

Java使用Documents4j实现Word转PDF(知识点+案例)

文章目录 前言源码获取一、认识Documents4j二、快速集成2.1、pom.xml依赖2.2、word转PDF实现项目目录WordUtils.javaDemo6.java测试效果 参考文章资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里…

CSS的伪类选择器:nth-child()的用法示例

CSS的伪类选择器:nth-child()的用法示例 n可以- , 右边数字只能 第一到第六的td : td:nth-child(n1):nth-child(-n6) td:nth-child(n1):nth-child(-n6)第二到第八的a : a:nth-child(n2):nth-child(-n8) a:nth-child(n2):nth-child(-n8)1等效0n1 , 7等效0n7 , 没有负数,不能…

使用 C++23 从零实现 RISC-V 模拟器(6):权限支持

本节内容增加了权限表示,设置了三种权限。当 cpu 初始化时默认的权限为 Machine 模式。接下来实现这三种特权模式,随后实现 sret 和 mret 指令。 RISC-V定义了三种特权等级,分别是用户态(User Mode)、监管态&#xff…

Linux-系统资源管理的命令

目录 查看CPU:more /proc/meminfo 查看内存数据:free -m / free -h 查看系统版本:more /etc/issue 查看操作系统的类型:uname -a 查看主机名称:hostname 查看磁盘空间:df -h 查看某个目录空间…

【解决(几乎)任何机器学习问题】:处理分类变量篇(上篇)

这篇文章相当长,您可以添加至收藏夹,以便在后续有空时候悠闲地阅读。 本章因太长所以分为上下篇来上传,请敬请期待 很多⼈在处理分类变量时都会遇到很多困难,因此这值得⽤整整⼀章的篇幅来讨论。在本章中,我将 讲述不同…

快速搞懂时间序列数据平稳检验

在对时间序列数据进行分析预测时,平稳时间序列数据预测效果更好。所以首先要检测数据是否平稳,没有趋势的时间序列数据,我们称为平稳的,即随着时间的推移,表现出恒定的方差,具有恒定的自相关结构。本文介绍…

Linux 虚拟机在线热扩容分区

介绍 本教程是用于Linux虚拟机在调整虚拟硬盘大小后,进行在线不重启热扩容分区大小。 适用于RHEL 7以上的版本及衍生发行版。(如Centos、Rocky Linux、Alma Linux等) 硬盘分区在线热扩容 刷新硬盘容量 echo 1 > /sys/block/sda/device…

GIS利用不舒适指数绘制地区的生物气候舒适度图

生物气候舒适度定义了最适宜的气候条件,在这种条件下,人们感到健康和充满活力。生物气候舒适度地图对城市规划研究特别有用。温度、相对湿度和风速等要素对评估生物气候舒适度非常重要。[1] 人们已经得出了许多不同的指数来确定生物气候舒适度。在本博文中,我们将使用广泛使…

C++基于多态的职工管理系统完整代码

1.头文件.h 部分&#xff1a; 1.1 Worker.h /*这是一个抽象的职工父类&#xff0c;以下类都继承自该类&#xff1a;1.Employee类 2.Manager类 3.Boss类 */#pragma once #include<iostream> #include<string> using namespace std; //使用标准命名空间 class W…

Elcomsoft 取证工具包系列:Advanced Office Password Recovery

天津鸿萌科贸发展有限公司是 Elcomsoft 系列软件授权代理商。 Advanced Office Password Recovery 是 Elcomsoft 取证工具包中的密码破解软件之一。它可以恢复、删除或规避使用各种 Office 套件创建的文档的密码。可以对 WordPerfect&#xff0c;Lotus&#xff0c;OpenOffice&…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--大模型、扩散模型等

专属领域论文订阅 VX关注{晓理紫}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新论文。 为了答谢各位网友的支持&#xff0c;从今日起免费为…

深入浅出 Python 函数:编写、使用与高级特性详解

引言 在 Python 编程的世界中,函数堪称构建复杂逻辑和模块化程序的基础砖石。它能够帮助程序员组织代码、避免重复,并通过封装逻辑提高代码的可读性和可维护性。本文旨在全方位解析 Python 函数的核心概念,包括基础定义、文档化、默认参数、可选参数、解包参数、关键字仅参…

普中51单片机学习(七)

LED闪烁 delay函数 延时函数 void delay(unsigned int i)//大约延时10us {while(i--); }实验代码 #include "reg52.h" typedef unsigned char u8; typedef unsigned int u16;void delay(u16 i) {while(i--); } sbit ledP2^0;void main(){while(1){led0;delay(10…