vue2路由(上)

news2024/12/25 10:01:46

路由的简介

什么是路由?

用生活上的例子,路由器上的接口对应一个主机。

而由key和values组成的映射关系就是路由

 主要用于SPA单页面应用

 就是根据你端口号后面的路径,看你有没有配置这个页面对应的组件,如果有,那么就展示出来,如果没有对应的组件,那么就不展示

总结:

vue-router的理解

vue的一个插件库,专门用来实现SAP应用

对SPA应用的理解

1. 单页 Web 应用(single page web application,SPA)。

2. 整个应用只有一个完整的页面

3. 点击页面中的导航链接不会刷新页面,只会做页面的局部更新

4. 数据需要通过 ajax 请求获取

1. 什么是路由?

1. 一个路由就是一组映射关系(key - value)

2. key 为路径, value 可能是 function 或 component

2. 路由分类

1. 后端路由:

        1) 理解:value 是 function, 用于处理客户端提交的请求。

        2) 工作过程:服务器接收到一个请求时, 根据请求路径找到匹配的函数 来处理请求, 返回响应数据。

2. 前端路由:

        1) 理解:value 是 component,用于展示页面内容。

        2) 工作过程:当浏览器的路径改变时, 对应的组件就会显示。

路由基本使用

先封装俩个组件

 

 在页面就是这样的效果

我们要使用路由,那么需要先下载它需要的包

但是要注意:2022年2月7日以后,vue-fouter的默认版本,为4版本,而且vue-router4只能在vue3中使用,vue-router3才,能用在vue2中

如果强行把vue-router安装到vue2中就会报这样的错误

所有也就是需要安装npm i vue-router@3\

 引入并使用路由

 使用router-link实现路径的切换,效果类似于a标签 注意路径是用to /about 不要加点 否则路径就变成了127.0.0.1#8081/./about这肯定是错误的 应该是 127.0.0.1#8081/about

最终还是变成了a标签 

这样就能实现了路由的变化

总结:

1.基本使用

 * 安装vue-router,命令:``npm i vue-router``
* 应用插件:``Vue.use(VueRouter)``
* 编写router配置项:

//引入VueRouter
import VueRouter from 'vue-router'
//引入Luyou 组件
import About from '../components/About'
import Home from '../components/Home'

//创建router实例对象,去管理一组一组的路由规则
const router = new VueRouter({
	routes:[
		{
			path:'/about',
			component:About
		},
		{
			path:'/home',
			component:Home
		}
	]
})

//暴露router
export default router

实现切换(active-class可配置高亮样式)

<router-link active-class="active" to="/about">About</router-link>

指定展示位置

<router-view></router-view>

几个注意点

我们一般将路由组件放在Pages文件夹下,一般路由放在components文件夹下,这么方便管理

 现在有一个问题,就是我们在使用about组件时,home组件去哪里了呢?是销毁了,还是隐藏起来你?

其实,我们切换的组件是被销毁了 

当我们配置了路由组件,那么在我们身上会多了俩个配置,一个是$route,另一个是$router

 $route:就是我们配置的路由规则

$router:整个页面的路由器,每一个路由都有一个相同的路由器

总结:

1.路由组件通常存放在 ``pages``文件夹,一般组件通常存放在 ``components``文件夹。
2.通过切换,“隐藏”了的路由组件,默认是被销毁掉的,需要的时候再去挂载。
3.每个组件都有自己的 ``$route``属性,里面存储着自己的路由信息。
4.整个应用只有一个router,可以通过组件的 ``$router``属性获取到。

嵌套路由

这个红色的一级路由,而粉色的配置就是二级路由,也是人家里面的

 注意的是子路由采用的是children:[]数组的形式,因为它不单单只有一个路由,{path:'路径'}这样还要注意的一点,不能加/,因为vue已经内容帮我们添加好了 

这里router-link中to属性路径必须要写完整

总结 

配置路由规则,使用children配置项:

routes:[
	{
		path:'/about',
		component:About,
	},
	{
		path:'/home',
		component:Home,
		children:[ //通过children配置子级路由
			{
				path:'news', //此处一定不要写:/news
				component:News
			},
			{
				path:'message',//此处一定不要写:/message
				component:Message
			}
		]
	}
]

跳转(要写完整路径):

<router-link to="/home/news">News</router-link>

路由的query参数

三级路由

 

 写死的

 这种写法动态的传参,to的字符串写法,如果数据太多了,就不好了

因此我们可以用to的对象写法

总结

传递参数

<!-- 跳转并携带query参数,to的字符串写法 -->
<router-link :to="/home/message/detail?id=666&title=你好">跳转</router-link>

<!-- 跳转并携带query参数,to的对象写法 -->
<router-link 
	:to="{
		path:'/home/message/detail',
		query:{
		   id:666,
            title:'你好'
		}
	}"
>跳转</router-link>

接收参数:

$route.query.id
$route.query.title

命名路由

就是给路由配置个名字

使用的就是name关键字 

就是原先使用path指明路径,太繁杂了。我们可以直接使用name替代

1.作用:可以简化路由的跳转。

2.如何使用

给路由命名:

{
	path:'/demo',
	component:Demo,
	children:[
		{
			path:'test',
			component:Test,
			children:[
				{
                      name:'hello' //给路由命名
					path:'welcome',
					component:Hello,
				}
			]
		}
	]
}

简化跳转:

<!--简化前,需要写完整的路径 -->
<router-link to="/demo/test/welcome">跳转</router-link>

<!--简化后,直接通过名字跳转 -->
<router-link :to="{name:'hello'}">跳转</router-link>

<!--简化写法配合传递参数 -->
<router-link 
	:to="{
		name:'hello',
		query:{
		   id:666,
            title:'你好'
		}
	}"
>跳转</router-link>

路由的params参数

先要到router的js中给它需要的路径下设置占位符

然后的的值就在router下的params下

也就是在路径下的/:id/:name

用对象简写的方式,也就是修改一下参数为params

但是这里有一个坑,也就是不能使用path参数,这样会报错

 总结

配置路由,声明接收params参数

{
	path:'/home',
	component:Home,
	children:[
		{
			path:'news',
			component:News
		},
		{
			component:Message,
			children:[
				{
					name:'xiangqing',
					path:'detail/:id/:title', //使用占位符声明接收params参数
					component:Detail
				}
			]
		}
	]
}

 传递参数

<!-- 跳转并携带params参数,to的字符串写法 -->
<router-link :to="/home/message/detail/666/你好">跳转</router-link>

<!-- 跳转并携带params参数,to的对象写法 -->
<router-link 
	:to="{
		name:'xiangqing',
		params:{
		   id:666,
            title:'你好'
		}
	}"
>跳转</router-link>

 特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!

路由的props配置

就是读取参数的时候读取的简单些,不要读取这些重复的参数

不可理

此时我们可以使用路由的props来接收

 以props形式传,以Deatil来接收

但是这种写法,我们用的比较少,因为我们传入的是死数据

 

 但是不能传递query参数

 总结

作用:让路由组件更方便的收到参数

{
	name:'xiangqing',
	path:'detail/:id',
	component:Detail,

	//第一种写法:props值为对象,该对象中所有的key-value的组合最终都会通过props传给Detail组件
	// props:{a:900}

	//第二种写法:props值为布尔值,布尔值为true,则把路由收到的所有params参数通过props传给Detail组件
	// props:true

	//第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件
	props(route){
		return {
			id:route.query.id,
			title:route.query.title
		}
	}
}

router-link的replace属性

就是路由对浏览器历史记录的影响

浏览器如何保存历史记录

浏览器也就是一个栈,不同的历史记录一条一条的push到内存中,也就是压栈(类似数组的),然后它的指针默认指向的是最上面的那条,你返回上条历史记录,指针就往那条记录指

 除了push的操作外,还有replace

 新的放进来,旧的被干掉。而默认开启是push模式

打开也很简答,也就是添加一个replace属性,当然这是一个简写方式,完整的写法是:replace="true"

总结

  1. * 作用:控制路由跳转时操作浏览器历史记录的模式
  2. * 浏览器的历史记录有两种写入方式:分别为 ``push``和 ``replace``,``push``是追加历史记录,``replace``是替换当前记录。路由跳转时候默认为 ``push``
  3. * 如何开启 ``replace``模式:``<router-link replace .......>News</router-link>`` 

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

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

相关文章

批处理脚本用法总结

目录一、常用命令二、基本语法1. rem 和 ::2. echo 和 3. pause4. errorlevel5. title6. color7. goto 和 :三、常见用法1. 设置临时环境变量2. 启动CMD执行命令3. 打开环境变量窗口参考资料&#xff1a;批处理(Batch)&#xff0c;也称为批处理脚本。顾名思义&#xff0c;批处理…

零入门kubernetes网络实战-29->在同一个宿主机上基于虚拟网桥bridge链接不同网段的不同网络命名空间的通信方案

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 上一篇文章&#xff0c;我们分享了使用虚拟网桥来连接同网段的不同网络命名空间下的通信情况。 那么&#xff0c;本篇文章&#xff0c; 我们想测试一下&…

用ChatGPT快速阅读论文:3个步骤让你轻松阅读论文文档

引言 您是否曾经因为阅读论文而感到困难和无从下手&#xff1f;ChatDOC是一款专为您设计的人工智能工具&#xff0c;帮助您快速理解论文内容。通过上传文档&#xff0c;利用ChatGPT技术&#xff0c;您只需3个简单步骤&#xff0c;即可快速阅读论文&#xff0c;提高阅读效率。立…

[架构之路-162]-《软考-系统分析师》-3-作系统基本原理-进程管理

目录 前言&#xff1a; 3 . 1 操作系统概述 3.1.1 操作系统的类型 2 . 批处理系统 3 . 分时操作系统 4 . 网络操作系统 5 . 分布式操作系统 6 . 嵌入式操作系统 3.1.2 操作系统的软件结构 1 . 整体结构 2 . 层次结构 3 . 客户/服务器结构 4 . 面向对象结构 3 . 2…

一文总结 Shiro 实战教程

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

InstructGLM:基于ChatGLM-6B在指令数据集上进行微调

InstructGLM 基于ChatGLM-6BLoRA在指令数据集上进行微调 https://github.com/yanqiangmiffy/InstructGLM 本项目主要内容&#xff1a; &#x1f680; 2023/4/9 发布了基于100万条由BELLE项目生成的中文指令数据的Lora权重&#xff0c;具体可见output/belle/chatglm-lora.pt&a…

【Spring Boot】SpringBoot设计了哪些可拓展的机制?

文章目录前言SpringBoot核心源码拓展Initializer拓展监听器ApplicationListenerBeanFactory的后置处理器 & Bean的后置处理器AOP其他的拓展点前言 当我们引入注册中心的依赖&#xff0c;比如nacos的时候&#xff0c;当我们启动springboot&#xff0c;这个服务就会根据配置文…

【UE Sequencer系列】05-解决角色动画造成的位移问题

步骤 在上一篇博客制作的动画中&#xff0c;角色反击的动画部分会造成角色瞬移的问题&#xff0c;如下所示&#xff1a; 为了解决这个问题&#xff0c;我们可以做如下操作&#xff1a; 1.首先我的瞬移现象发生在第698帧到699帧的时候&#xff0c;我对第698帧的角色的transfor…

小朋友台灯什么品牌好?盘点儿童护眼台灯排行榜

小朋友自晚上学习时&#xff0c;有台灯肯定比没有台灯好&#xff0c;只要是合格的、能用的台灯&#xff0c;能有一个稳定又亮堂的环境&#xff0c;也不会给眼睛带来伤害。 这几年在台灯品类中出现“护眼灯”&#xff0c;主打是预防或缓解眼疲劳的&#xff0c;在普通台灯的基础是…

电子模块|外控集成 LED 光源 WS2812模块---硬件介绍

电子模块|外控集成 LED 光源 WS2812模块模块简介模块特点机械尺寸模块简介 WS2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同&#xff0c;每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路&#xff…

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的直方图算法增强(C#)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的直方图算法增强&#xff08;C#&#xff09;Baumer工业相机Baumer工业相机使用图像算法增加图像的技术背景Baumer工业相机通过BGAPI SDK联合OpenCV使用图像增强算法1.引用合适的类文件2.BGAPI SDK在图像回调中…

如何能基于prompt tuning v2训练好一个垂直领域的chatglm-6b

如何能基于prompt tuning v2训练好一个垂直领域的chatglm-6b 首先先抛出一个问题&#xff0c;是不是所有的文本生成数据集都适合用chatglm 6B的模型进行微调。那我们今天找到了三个数据集&#xff0c;分别为百科数据集、法律问答数据集、论文题目与摘要数据集、专利名称与专利…

stable-diffusion-webui-colab部署记录

stable-diffusion-webui-colab 该模型可以在网上云端部署stable-diffusion&#xff0c;减少本地部署的繁琐步骤降低配置要求的依赖。 一、进入stable-diffusion-webui-colab 1.网址&#xff1a;https://github.com/camenduru/stable-diffusion-webui-colab 在分支中选择driv…

java 坐标体系与绘图

目录 一、坐标体系 1.像素 : 2.坐标系 : 二、绘图 1.机制 : 2.实例 : 3.原理 : 4.常用绘图方法 : 1 setColor(Color c) : 设置画笔颜色 2 drawLine(int x1, int y1, int x2, int y2) : 画直线 3 drawRect(int x, int y, int width, int height) : 画矩形边框 4 fillRec…

【密码学复习】第六讲 HASH函数和MAC(三)

H是一个Hash函数 K表示密钥 B表示计算消息摘要时消息分块的字节长度&#xff08;对MD5和SHA-1是512比特,64字节&#xff09; L表示消息摘要按字节计算的长度&#xff08;对MD5是16字节&#xff09; ipad表示0x36重复B次&#xff0c;opad表示0x5c重复B次。 K可以…

腾讯云轻量服务器价格表(2023版)

2023腾讯云轻量应用服务器2核2G4M带宽88元一年、2核4G6M带宽159元/年、4核8G10M优惠价425元、8核16G14M价格1249、16核32G20M服务器2499元一年&#xff0c;今天分享2023腾讯云服务器配置及精准报价。 腾讯云轻量应用服务器优惠价格表 腾讯云服务器分为轻量应用服务器和云服务器…

Games106学习记录第一课

本文地址&#xff1a;https://blog.csdn.net/t163361/article/details/130139998 最近准备申请新星创作者&#xff0c;需要2000个粉丝关注&#xff0c;觉得文章有用的&#xff0c;请点一下左侧边栏的关注&#xff0c;谢谢。 前段时间看到Games106课程&#xff0c;讲的是流水线…

【天梯赛—不想坑队友系列】L1-002 打印沙漏(java)

题目链接 PTA | 程序设计类实验辅助教学平台 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”&#xff0c;要求按下列格式打印 ************ *****所谓“沙漏形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符号中心对齐&#xff1b;相邻两行符…

c/c++:2进制、8进制、10进制、16进制和进制之间的转换,c语言输出匹配格式%

c/c&#xff1a;2进制、8进制、10进制、16进制和进制之间的转换&#xff0c;c语言输出匹配格式% 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知道的周边的会c的同学&#xff0c;可手握10…

Linux主机用WordPress搭建网站

文章目录一、搭建过程1.1、切换到超户1.2、更新1.3、安装一些包1.4、安装wordpress1.5、配置MariaDB1.6、创建WordPress数据库1.7、配置WordPress1.8、登录WordPress1.9、安装phpMyAdmin一、搭建过程 1.1、切换到超户 sudo su1.2、更新 apt-get update -y1.3、安装一些包 a…