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;

运行效果:

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

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

相关文章

PSA Group EDI 需求分析

PSA集团&#xff08;以下简称PSA&#xff09;中文名为标致雪铁龙集团&#xff0c;是一家法国私营汽车制造公司&#xff0c;致力于为全球消费者提供独具特色的汽车体验和自由愉悦的出行方案&#xff0c;旗下拥有标致、雪铁龙、DS、欧宝、沃克斯豪尔五大汽车品牌。 汽车制造企业对…

Lesson4--栈和队列

【本节目标】 1.栈 2.队列 3.栈和队列面试题 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &…

【做一名健康的CSDNer】

程序员由于工作性质&#xff0c;常常需要长时间面对电脑&#xff0c;这可能对身心健康带来挑战。以下是一些实用的建议&#xff0c;帮助程序员保持身心健康&#xff1a; 规律生活&#xff1a;建立健康的生活习惯&#xff0c;包括规律的作息时间和固定的饮食时间&#xff0c;保证…

【深度学习】写实转漫画——CycleGAN原理解析

1、前言 上一篇&#xff0c;我们讲解了按照指定文本标签生成对应图像的CGAN。本篇文章&#xff0c;我们讲CycleGAN。这个模型可以对图像风格进行转化&#xff0c;并且训练还是在非配对的训练集上面进行的&#xff0c;实用性挺大 原论文&#xff1a;Unpaired Image-to-Image T…

数学建模--非线性规划模型+MATLAB代码保姆式解析

目录 1.简单介绍 2.求解方法 3.适用赛题 4.典型例题及相关分析 &#xff08;1&#xff09;问题引入 &#xff08;2&#xff09;决策变量&约束条件 &#xff08;3&#xff09;确定目标函数 &#xff08;4&#xff09;建立数学模型 5.MATLAB代码祝逐字句讲解 1.简单…

C++进阶:搜索树

目录 1. 二叉搜索树1.1 二叉搜索树的结构1.2 二叉搜索树的接口及其优点与不足1.3 二叉搜索树自实现1.3.1 二叉树结点结构1.3.2 查找1.3.3 插入1.3.4 删除1.3.5 中序遍历 2. 二叉树进阶相关练习2.1 根据二叉树创建字符串2.2 二叉树的层序遍历I2.3 二叉树层序遍历II2.4 二叉树最近…

用Cmake编译程序时,链接到FFmpeg库

用Cmake编译程序时&#xff0c;链接到FFmpeg库 一、前言 可喜可贺&#xff0c;折腾了一晚上终于把这个勾八链接成功了&#xff0c;已经要吐了。看到下面控制台的输出&#xff0c;吾心甚慰呀&#x1f62d; [100%] Linking CXX executable rknn_yolov5_demo [100%] Built targe…

lesson03:类和对象(中)

1.类的6个默认的成员函数 2.构造函数 3.析构函数 4.拷贝构造函数 1.类的6个默认的成员函数 空类&#xff08;类中一个成员都没没有&#xff09;会有成员函数吗&#xff1f; 其实是有的&#xff01;如果我们在类中什么都不写&#xff0c;编译器会自动生成6个默认成员函数&a…

浏览器渲染流程中的 9 个面试点

记得 08 年以前&#xff0c;打开网页的时候一个页面卡死整个浏览器凉凉。 这是因为当时浏览器是单进程架构&#xff0c;一个页面或者插件卡死&#xff0c;整个浏览器都会崩溃&#xff0c;非常影响用户体验。 经过了一代代工程师的设计&#xff0c;现代浏览器改成了多进程架构&…

【BUG】前端|GET _MG_0001.JPG 404 (Not Found),hexo博客搭建过程图片路径正确却找不到图片

我的问题 我查了好多资料&#xff0c;结果原因是图片名称开头是_则该文件会被忽略。。。我注意到网上并没有提到这个问题&#xff0c;遂补了一下这篇博客并且汇总了我找到的所有解决办法。 具体检查方式&#xff1a; hexo生成一下静态资源&#xff1a; hexo g会发现这张图片…

深入了解PBKDF2:密码学中的关键推导函数

title: 深入了解PBKDF2&#xff1a;密码学中的关键推导函数 date: 2024/4/20 20:37:35 updated: 2024/4/20 20:37:35 tags: 密码学对称加密哈希函数KDFPBKDF2安全密钥派生 第一章&#xff1a;密码学基础 对称加密和哈希函数 对称加密&#xff1a;对称加密是一种加密技术&…

【Pytorch】Yolov5中CPU转GPU过程报错完善留档归纳

Yolov5 从CPU转GPU Python多版本切换 Conda包处理 文章目录 Yolov5 从CPU转GPU Python多版本切换 Conda包处理1.Pytorch套件中存在版本不匹配2.numpy停留在3.8没跟上pytorch2.2.23.ModuleNotFoundError: No module named pandas._libs.interval4.ImportError: cannot imp…