Vue.js前端开发零基础教学(六)

学习目标

了解什么是路由,能够说出前端后端路由的原理

掌握多种路由的使用方法,能够实现路由的不同功能

掌握Vue Router的安装及基本使用方法

5.1 初始路由   

提到路由(Route),一般我们会联想到网络中常见的路由器(Router),那么路由和路由有什么关联呢?路由是指路由器从一个接口接收到数据,根据数据的目的地址将数据传送到另一个接口的行为和动作;而路由器是执行行为和动作的硬件设备,只要用于连接网络,实现不同网络之间的通信和数据传递。

     Web开发也有路由的概念。Web开发中的路由用于根据用户请求的URL地址分配对应的处理程序 根据技术的不同,web开发的路由分为后端路由前端路由,下面分别进行介绍 。

1.后端路由

后端路由的整个过程发生在服务器端,开发者需要在服务程序中建立一套后端路由规则。当服务器收到请求后,会通过路由寻找当前请求的URL地址对应的处理程序。

Node.js环境中的Express框架的路由属于后端路由。   

2.前端路由

前端路由由整个过程发生在浏览器端,其特点是当URL地址改变时不需要向服务器发送一个加载新页面的请求,而是在维持当前页面的情况下切换页面中显示的内容。  

  (1)Hash模式

Hash模式的前端路由通过URL中从“#”开始的部分实现不同组件之间的切换,“#”表示Hash符,“#”后面的值称为Hash值,该值将用于进行路由匹配。

(2)HTML5模式

HTML5模式的URL地址与后端路由的URL地址的风格一致,可以通过URL地址中的路径进行路由匹配。HTML5模式利用HTML5新增的history.pushStae()方法实现了在浏览器中维持当前页面的情况下改变URL地址的路径。

5.2 初识Vue Router

vue Router是Vue官方提供的路由管理器,它与Vue.js核心深度集成,从而使构建单页Web应用变得更加简单。

5.2.1 vue Router的安装

Vue Router有多个版本,其中,vue Router4适用于Vue3,而vue Router3适用于Vue2.

首先新建vue3项目,命名为“第五章”,随后右键如图所示

   弹出命令黑框

 输入“yarn add vue-router@4”

这种情况就是安装成功了

5.2.2 Vue Router的基本使用

完成Vue Router安装后,就可以使用路由了。路由的基本使用步骤是:首先定义路由组件,以便使用Vue Router控制路由组件的展示与切换;接着定义路由链接和路由视图,以便告知路由组件渲染到页面的哪个位置;然后在项目中创建路由模块;最后导入并挂载路由模块。

1.定义路由组件

在第五章项目中分别建立两个组件,分别是Home(首页)组件和About(关于)组件,如下所示。

Home`.vue(首页)组件代码如下:

<template>
	<div class="home-con">
		<h3>这是我的首页组件</h3>
	</div>
</template>

<script>

</script>

<style scoped>
	.home-con{
		min-height: 150px;
		background-color: #f2f2f2;
		padding: 15px;
	}
</style>

About.vue(关于)组件代码如下:

<template>
	<div class="about-con">
		<h3>这是我的关于组件</h3>
	</div>
</template>

<script>

</script>

<style scoped>
	.about-con{
		min-height: 150px;
		background-color: #f2f2f2;
		padding: 15px;
	}
</style>

App.vue代码:

<script setup>

</script>

<template>
  <div class='app-con'>
	  <h1>这是我的根组件</h1>
	  <router-link to="/home">首页</router-link>
	  <router-link to="/about">关于</router-link>
	  <hr/>
	  <!--路由视图渲染路由组件的内容-->
	  <router-view></router-view>
  </div>
</template>

<style scoped>
	.app-con{
		text-align: center;
		font-size: 16px;
	}
	.app-con a{
		color: #000;
		padding: 10px;
	}
	.app-con a.router-link-active{
		color: #fff;
		background-color: #000;
	}
</style>

router.js代码:

import Home from './components/Home.vue'
import About from './components/About.vue'
import { createRouter, createWebHashHistory } from 'vue-router'
//createRouter创建路由实例
//history指定路由的工作模式
//routes路由匹配规则(属性值为数组)
const router =createRouter({
	history:createWebHashHistory(),
	routes:[
		{path:'/Home',component:Home},
		{path:'/About',component:About},
	]
});
//导出路由实例对象
export default router;

 修改main.js代码:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router.js'
const app=createApp(App);
app.use(router)
app.mount('#app')
// createApp(App).mount('#app')

运行结果:

点击首页界面 ,弹出首页界面 

点击“关于”呈现出“我的关于组件”

在router.js加入一行代码,可以直接指定运行浏览器中显示该界面

{path:'/',redirect:'/Home'},//自动跳转到home界面

 运行结果:

5.3 嵌套路由

语法格式:

routers:[
{
path:'父路由路径,
component:父组件,
childeren:[
{path:'子路由路径1',component:组件1},
{path:'子路由路径2',component:组件2},
]
}
]

在组件中定义路由链接的语法格式如下:

<router-link to="/父路由路径/子路由路径"></router-link>

演示嵌套路由的实现

在src/components目录下创建pages目录,用于放子路由组件

创建Tab1.vue文件

<template>
	<div>Tab1组件</div>
</template>

<script>
</script>

<style scoped>
	div{
		/* 显示时的文本居左对齐 */
		text-align: left;
		/* 显示时的背景色 */
		background-color: #9dc4e5;
	}
</style>

创建Tab2.vue文件

<template>
	<div>Tab2组件</div>
</template>

<script>
</script>

<style scoped>
	div{
		/* 显示时的文本居左对齐 */
		text-align: left;
		/* 显示时的背景色 */
		background-color: #ffba00;
	}
</style>

创建About.vue文件

<template>
	<div class="about-container">
		<h3>About组件</h3>
		<!-- 嵌套路由的子路由器连接 -->
		<router-link to="/about/tab1">tab1</router-link>
		<router-link to="/about/tab2">tab2</router-link>
		<hr />
		<router-view></router-view>
	</div>
</template>

<script>
</script>

<style scoped>
	.about-container{
		min-height: 150px;
		/* 显示的背景颜色 */
		background-color: blueviolet;
		padding: 15px;
	}
	.about-container a{
		padding: 10px;
		border: 1px solid #ccc;
		border-radius: 5px;
		padding: 5px 10px;
		/* 字体颜色 */
		color: crimson;
		margin: 0 5px;
	}
	.about-container a.router-link-active{
		/* 选中后字体颜色 */
		color: gold;
		/* 选中后的背景色 */
		background-color: green;
	}
</style>

修改router.js文件

// 导入相关函数
import { createRouter, createWebHashHistory } from "vue-router";
//导入需要被路由控制的Home组件和About组件
import Home from "./components/Home.vue";
import About from "./components/About.vue";
import Tab1 from "./components/pages/Tab1.vue";
import Tab2 from "./components/pages/Tab2.vue";
//  子路由匹配规则,放入外部引入
const chilrou=[
	{path:'tab1',component:Tab1},
	{path:'tab2',component:Tab2},
]
//创建路由实例对象router
const router=createRouter({
	// 工作模式为Hash模式
	history:createWebHashHistory(),
	// 路由匹配规则
	routes:[
		// 路由重定向
		{path:'/',redirect:'/home'},
		//待匹配路径
		{path:'/home',component:Home},
		{
			path:'/about',component:About,
			// children属性,chilrou属性值
			children:chilrou
			//  子路由匹配规则,放入内部
			// children:[
			// 	{path:'tab1',component:Tab1},
			// 	{path:'tab2',component:Tab2},
			// ]
		},
	]
});
//导出路由实例对象
export default router;

运行效果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

30 消息队列

原理 操作系统可以通过页表映射在共享区创建一块共享内存&#xff0c;也可以申请一个队列。A进程和B进程可以向这个队列发送数据块&#xff0c;两个进程接收数据块来通信 函数 申请数据块 参数中的key来自于ftok函数 删除消息队列 同样消息队列也有数据结构管理&#xff…

c#学习入门1

一、环境配置 颜色主题 字体设置 行号设置 二、第一个应用程序 1. 在解决方案下创建一个新项目 第一种注释&#xff1a;两杠注释 第二种注释&#xff1a;星号注释 第三种注释&#xff1a;三杠注释(只有在花括号后面输出才会自动补全&#xff09; 2.控制台输入打印基础语句 输…

java在线问卷调查系统的设计与实现(springboot+mysql源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线问卷调查系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于java的在线问卷调查…

HBM:小贵但AI需要

即将推出的高带宽内存 high-bandwidth memory在散热方面还存在挑战&#xff0c;但可能即将得到改善。 高带宽内存 &#xff08;HBM&#xff09; 正在成为算力提供商的首选内存&#xff0c;由于 AI/ML 的需求&#xff0c;使用量也在继续增长&#xff0c;HBM 提供紧凑的 2.5D 外形…

P1024 [NOIP2001 提高组] 一元三次方程求解

题目描述&#xff1a; AC代码&#xff1a; #include<iostream>using namespace std;double a,b,c,d; int ans 0;double f(double x) {return a * x * x * x b * x * x c * x d; }int main() {scanf("%lf %lf %lf %lf",&a,&b,&c,&d);for…

钉钉报警的优势在哪里?如何配置钉钉机器人进行报警信息推送?

一、常见的报警方式 1、短信或者电话报警 这样的报警方式更适合高级别的报警提醒&#xff0c;用于处理紧急情况。出现级别不高而又频繁地发送短信会让人产生排斥感&#xff0c;而且电话或者短信的报警方式也存在一定的成本。 2、邮件报警 邮件报警更适用于工作时的提醒&…

DSSM 模型技术介绍

转自&#xff1a;git 本文属于新闻推荐实战-召回阶段-DSSM召回模型。区别于策略召回&#xff0c;基于向量召回也是目前工业界常用的一种召回方法。这里我们将介绍一个比较经典的召回模型DSSM&#xff0c;希望读者可以快速掌握模型原理以及细节&#xff0c;同时可以了解具体的实…

第25天:安全开发-PHP应用文件管理包含写入删除下载上传遍历安全

第二十五天 一、PHP文件管理-下载&删除功能实现 1.文件上传&#xff1a; 无过滤机制黑名单过滤机制白名单过滤机制文件类型过滤机制 2.文件删除&#xff1a; unlink() 文件删除函数调用命令删除&#xff1a;system shell_exec exec等 3. 文件下载&#xff1a; 修改HT…

问题带来多少成长,看你挖得有多深多痛

原文: 一次Redis访问超时的“捉虫”之旅 力是相互的&#xff0c;成长与痛苦也是相互的。 01-引言 最近在对一个老项目使用的docker镜像版本升级过程中碰到一个奇怪的问题&#xff0c;发现项目升级到高版本镜像后&#xff0c;访问Redis会出现很多超时错误&#xff0c;而降回之…

stable diffusion Temporal-kit和EbSynth视频转动画学习笔记

1、打开stable diffsuion webui 点击Temporal-kit 页签&#xff0c;再点击预处理pre-processing,上传视频 在工作目录下得到拆分的关键帧,在input目录里 打开图生图&#xff0c;输入正反描述词&#xff0c;其他配置如下 批量生成图片&#xff0c;找到最满意的那一张&#xff0…

如何判别三角形和求10 个整数中最大值?

分享每日小题&#xff0c;不断进步&#xff0c;今天的你也要加油哦&#xff01;接下来请看题------> 一、已知三条边a&#xff0c;b&#xff0c;c能否构成三角形&#xff0c;如果能构成三角形&#xff0c;判断三角形的类型&#xff08;等边三角形、等腰三角形或普通三角形 …

【Interconnection Networks 互连网络】Torus 网络拓扑

1. Torus 网络拓扑2. Torus 网络拓扑结构References 1. Torus 网络拓扑 Torus 和 Mesh 网络拓扑&#xff0c;又可以称为 k-ary n-cubes&#xff0c;在规则的 n 维网格中包裹着 N k^n 个节点&#xff0c;每个维度都有 k 个节点&#xff0c;并且最近邻居之间有通道。k-ary n-c…

数据可视化(八):Pandas时间序列——动态绘图,重采样,自相关图,偏相关图等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

关于杰理AC695蓝牙模式下按键处理函数处理

一、杰理蓝牙模式下又分为SYS_KEY_EVENT和SYS_BT_EVENT。SYS_KEY_EVEN主要是对按键的控制事件&#xff0c;SYS_BT_EVENT是蓝牙模式协议栈状态事件、hci事件、对箱事件。 二、按键通过key_event *key &event->u.key; u定义了一个union事件的联合体&#xff0c;通过按键k…

【C++ STL序列容器】array 数组

文章目录 【 1. 基本原理 】【 2. array 的创建 】2.1 不赋初值2.2 赋默认值2.3 赋指定值 【 3. array 的成员函数 】实例 【 1. 基本原理 】 array 是在 C 普通数组的基础上添加了一些成员函数和全局函数。在使用上&#xff0c;它 比普通数组更 安全&#xff0c;且效率并没…

Web3钱包开发获取测试币-Base Sepolia(二)

Web3钱包开发获取测试币-Base Sepolia(二) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b0c0ac86b04a496087471388532bc54a.png) 基于上篇 Web3钱包开发获取测试币-Polygon Mumbai(一) &#xff1a;https://suwu150.blog.csdn.net/article/details/137949473 我…

呼市经开区建设服务项目水、电能耗监测 数采案例

一、项目背景及需求 项目地点位于内蒙古呼和浩特市&#xff0c;呼市数字经开区建设服务项目。属于企业用能数据采集、能耗监测板块子项目。 针对水、电能耗数据采集&#xff0c;结合现场客观因素制约&#xff0c;数据采集方面存在较大难度。大多数国网电表485接口由于封签限制…

WordPress 告别 MySQL:Docker SQLite WordPress

本篇文章聊聊&#xff0c;如何将这个持续诞生和维护了 21 年的开源软件“脱离数据库”运行&#xff0c;让它能够更加轻量、适合低成本离线运行。 写在前面 2003 年&#xff0c;Michel Valdrighi 基于 b2/cafelog 创建了开源软件 WordPress&#xff0c;并在 GPL 协议下发布。 …

【ARM Trace32(劳特巴赫) 使用介绍 12.1 -- Trace32 读写 64位地址】

请阅读【Trace32 ARM 专栏导读】 文章目录 Trace32 读写 64位地址读 64 位地址写64位地址Trace32 读写 64位地址 在使用TRACE32进行调试时,有时需要读取或操作64位的地址,特别是在处理64位的处理器或操作系统时。以下是如何在TRACE32中读取64位地址的一般方法。 读 64 位地…

Hadoop大数据处理技术-配置连接篇

​2024/4/17 Hadoop学习前的准备 3&#xff09;连接虚拟机 上一节配置完成了基础的虚拟机配置及网络配置 下面我们开始建立连接 我们为什么要与虚拟机建立链接呢&#xff1f; 连接虚拟机就好像跟亲友联系一样 总得找个便捷又好用的工具才行 Secure CRT就像是一把能打开通向…