Vue的学习 —— <路由与网络请求>

目录

前言

正文

一、初识路由

二、初识Vue Router

1、安装Vue Router

2、Vue Router基本使用

三、路由重定向

四、嵌套路由


前言

在之前的学习中了解到单页Web应用通常只有一个HTML页面,所有的组件展示和切换都在这个页面上完成。虽然我们可以通过动态组件实现组件的切换,但当用户刷新页面或通过URL重新访问时,这些切换状态却无法被保留。为了解决这个问题,我们可以使用路由来实现组件的切换。

正文

一、初识路由

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

根据技术的不同,Web开发中的路由分为后端路由和前端路由。

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

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

二、初识Vue Router

1、安装Vue Router

Vue Router有多个版本,其中,Vue Router 4适用于Vue 3,而Vue Router 3适用于Vue 2。重点讲解Vue 3,所以接下来将基于Vue Router4进行讲解。

下面演示Vue路由的安装:

  1. 在D:\webProject\Demo05目录下创建一个新的Vue 3项目,命令如下:

    yarn create vite my-router --template vue
    cd my-router
    yarn
  2. 使用命令行进入到my-router目录中执行"yarn add vue-router@4 --save"命令安装Vue Router,效果如下图所示:

  3. 安装完成后,打开package.json,查看Vue router版本号

2、Vue Router基本使用

路由的基本使用步骤分为以下4步:

  1. 定义路由组件

  2. 定义路由链接和路由视图

  3. 创建路由模块

  4. 导入并挂载路由模块

下面演示Vue Router的使用方法:

  1. 在src\components目录下创建Home.vue文件和About.vue文件,分别写入如下代码:

    <!-- Home.vue文件 -->
    <template><div class="home-container"><h3>Home组件</h3></div>
    </template>
    <!-- About.vue文件 -->
    <template><div class="about-container"><h3>About组件</h3></div>
    </template>
  2. 在src/App.vue文件中使用定义路由链接和路由视图,<router-view>标签定义路由视图,该标签会被渲染成当前路由对应的组件。通过<router-link>标签定义路由链接方便在不同组件之间切换

    <template><div class="app-container"><h1>App根组件</h1><router-link to="/home">首页</router-link><router-link to="/about">关于</router-link><hr><router-view></router-view></div>
    </template>
  3. 在src目录下创建router.js文件作为路由模块,并在该文件中导入需要被路由控制的Home组件和About组件,关键代码如下:

    import { createApp } from 'vue'
    import './style.css'
    import App from './App.vue'
    import router from './router.js'    // 导入路由模块
    const app = createApp(App)
    app.use(router)     // 挂载路由模块
    app.mount('#app')
  4. 在src\main.js文件中导入并挂载路由模块,main.js完整代码如下:

    import { createApp } from 'vue'
    import './style.css'
    import App from './App.vue'
    import router from './router.js'    // 导入路由模块
    const app = createApp(App)
    app.use(router)     // 挂载路由模块
    app.mount('#app')
  5. 执行yarn dev命令启动服务。服务启动成功后,在浏览器中访问http://127.0.0.1:5173/home,使用路由后的初始页面效果、单击“首页”路由链接后的Home组件的效果如下图所示:

  6. 单击“关于”路由链接后的About组件的效果如下图所示

三、路由重定向

在开发过程中,可能希望当用户访问不同的路径时,页面中显示同一个组件,这时就需要用到路由重定向。路由重定向可以使用户在访问一个URL地址时,强制跳转到另一个URL地址,从而展示特定的组件。通过路由匹配规则中的redirect属性可以指定一个新的路由地址,从而实现路由重定向。

下面演示路由重定向的使用方法:

  1. 修改src\router.js文件,实现当用户访问“/”路径时,将路由重定向到“/home”路径,关键代码如下:

    const router = createRouter({history: createWebHashHistory(),routes: [{ path: '/', redirect: '/home' },{ path: '/home', component: import ('./components/Home.vue') },{ path: '/about', component: import('./components/About.vue') }]
    })
  2. 在浏览器中访问http://127.0.0.1:5173/,观察浏览器URL变化,页面效果如下图所示:

四、嵌套路由

嵌套路由是指通过路由实现组件的嵌套展示,它主要由页面结构决定。实际项目中的应用界面通常由多层嵌套的组件组合而成,为了使多层嵌套的组件能够通过路由访问,路由也需要具有嵌套关系,也就是在路由里面嵌套它的子路由。

在src\router.js文件的路由匹配规则中通过children属性定义子路由匹配规则,语法格式如下:

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

下面演示嵌套路由的使用方法:

  1. 在src\components目录下创建pages目录,用于存放子路由组件。

  2. 创建src\components\pages\Tab1.vue文件,文件代码如下:

    <template><div>Tab1组件</div>
    </template>
    <style scoped>
    div {text-align: left;background-color: #9dc4e5;
    }
    </style>
  3. 创建src\components\pages\Tab2.vue文件,文件代码如下:

    <template><div>Tab2组件</div>
    </template>
    <style scoped>
    div {text-align: left;background-color: #ffba00;
    }
    </style>
  4. 在component\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>
  5. 修改src\router.js文件,在routes中导入Tab1组件和Tab2组件,并使用children属性定义子路由匹配规则,关键代码如下:

    <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>
  6. 在浏览器中访问http://127.0.0.1:5173/。页面打开后,会自动重定向到About组件的路由,页面显示About组件;单击“tab1”链接,页面显示About组件中的Tab1组件;单击“tab2”链接,页面显示About组件中的Tab2组件,如下图所示。

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

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

相关文章

基于CentOS-7搭建hadoop3.3.6大数据集群(保姆级教程)

目录 安装虚拟机 为hadoop用户添加权限 关闭防火墙 修改主机名以及ip地址映射 配置ip 连接xshell &#xff0c;以hadoop用户登录 创建目录并将该文件夹权限赋予hadoop用户 安装配置jdk 关闭虚拟机&#xff0c;克隆其他两个节点 修改主机名和ip地址 配置免密登录 安装…

基于Vue和uni-app的增强型多选框Checkbox组件开发

基于Vue和uni-app的增强型多选框&#xff08;Checkbox&#xff09;组件开发 摘要 随着前端技术的不断发展和用户体验要求的提升&#xff0c;传统的Checkbox组件已不能满足所有需求。本文介绍了一种基于Vue和uni-app的增强型多选框&#xff08;Checkbox&#xff09;组件的开发…

C语言 | Leetcode C语言题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; int numDecodings(char* s) {int n strlen(s);// a f[i-2], b f[i-1], c f[i]int a 0, b 1, c;for (int i 1; i < n; i) {c 0;if (s[i - 1] ! 0) {c b;}if (i > 1 && s[i - 2] ! 0 && ((s[i - 2] - 0) * 10…

程序员的实用神器之——通义灵码

通义灵码介绍 “通义灵码”是一款基于阿里云通义代码大模型打造的智能编码助手&#xff0c;产品于2023年10月31日云栖大会上&#xff0c;正式对外发布。新手亦能驾轻&#xff0c;老手恒常运&#xff0c;唯手熟尔。 通义灵码产品介绍_智能编码助手_AI编程_云效(Apsara Devops)…

括号生成[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 数字n代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())(…

mysql主从热备+keepalived 部署mysql高可用主备模式

目录 1、环境准备 2、分别在主服务器和备用服务器上安装keepalived 3、修改keepalived服务的配置文件 3.1 修改主服务器上的keepalive服务的配置文件 3.2 修改备用服务器上的keepalive服务配置文件 4、编写mysql监控脚本放到主服务器上 5、在主服务器和备用服务器上查看…

太极图形学——高级数据结构——稀疏

我们在之前学习的稠密数据结构中主要可以分为root&#xff0c;dense&#xff0c;和field三个&#xff0c;而实际上我们还可以定义一个bitmasked和pointer这两个就是用来帮助我们维护空间稀疏性用的 举一个例子&#xff0c;首先是一个稠密结构&#xff0c;它的数据利用率很低 那…

万物皆可监控(shell脚本监控TIDB-DM和DSG同步状态)

监控的方式有很多&#xff0c;常用的有zabbix和prometheus平台&#xff0c;理论上都可以做到对有状态服务的监控&#xff0c;因为我个人对这两个监控平台不是很熟悉&#xff0c;所以一般喜欢使用shell脚本来做监控&#xff1b; 纯oracle 数据库的监控推荐使用EMCC&#xff0c;…

Unity之Image图片挖洞

最近开发一款打地鼠小游戏&#xff0c;地鼠是3D的&#xff0c;身体比较庞大&#xff0c;管道比较窄小&#xff0c;所以管道其实没办法将地鼠完全遮盖&#xff0c;于是想了一下几个方法。 1&#xff0c;让美术把3D物体裁剪掉&#xff0c;让地鼠的形态体积不至于露出UI&#xff…

短视频矩阵系统/源码----可视化剪辑技术独家开发

现阶段市面上大多矩阵软件都非常程序化且需要使用者具有较强的逻辑思维能力或剪辑经验&#xff0c;这使得一些个人、团队、企业在使用时无形中增加了学习成本&#xff0c;剪辑出来的效果大多不尽如人意&#xff0c;发出来的视频没有流量&#xff0c;根本达不到预期效果。 如何提…

GIT基础02 多机器协作等命令

前言 首先我们知道git给我们提供了分支管理的功能 我们一般使用master分支作为线上环境,master分支一般是一个稳定的分支 我们通常是会创建一个其他分支进行开发,这样不会影响线上的机器运行 如果没有git提供这样的分支功能,就无法做到这一套了 指令学习 假设软件出现问题咋办…

Redis教程(二):Redis在Linux环境下的安装

Linux环境下安装&#xff1a; 下载地址&#xff1a;Downloads - Redis 安装步骤&#xff1a; 下载得到一个 tar.gz 压缩文件 上传到Linux的/opt/soft目录&#xff0c;使用以下命令解压 tar -zxvf redis-6.2.14.tar.gz Linux安装基本环境gcc&#xff0c;安装命令 yum insta…

基于Vue和uni-app的增强型单选ccRadioView组件开发

标题&#xff1a;基于Vue和uni-app的增强单选组件ccRadioView的设计与实现 摘要&#xff1a;本文将详细介绍如何使用Vue和uni-app构建一个简单、好用且通用的单选框组件ccRadioView。该组件提供了单选列表的功能&#xff0c;并支持反向传值&#xff0c;方便开发者快速实现单选…

强化学习的优化策略PPO和DPO

DPO DPO(直接偏好优化)简化了RLHF流程。它的工作原理是创建人类偏好对的数据集&#xff0c;每个偏好对都包含一个提示和两种可能的完成方式——一种是首选&#xff0c;一种是不受欢迎。然后对LLM进行微调&#xff0c;以最大限度地提高生成首选完成的可能性&#xff0c;并最大限…

界面组件DevExpress WPF v23.2 - 全新升级的数据编辑器、流程图组件

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF控件日…

C语言 | Leetcode C语言题解之第92题反转链表II

题目&#xff1a; 题解&#xff1a; struct ListNode *reverseBetween(struct ListNode *head, int left, int right) {// 因为头节点有可能发生变化&#xff0c;使用虚拟头节点可以避免复杂的分类讨论struct ListNode *dummyNode malloc(sizeof(struct ListNode));dummyNode…

Redis-分布式锁实现方式

文章目录 Redis分布式锁的作用&#xff1f;Redis分布式锁的底层原理实现&#xff1f;Redis分布式锁的应用场景&#xff1f;Redis分布式锁遇到相关的场景问题&#xff1f;死锁问题锁超时问题归一问题可重入问题阻塞与非阻塞问题公平锁&#xff08;Fair Lock)公平锁&#xff08;F…

tomcat--应用部署

tomcat根目录结构 Tomcat中默认网站根目录是/usr/local/apache-tomcat-8.5.100/webapps/在Tomcat的webapps目录中&#xff0c;有个非常特殊的目录ROOT&#xff0c;它就是网站默认根目录。将eshop解压后的文件放到这个/usr/local/apache-tomcat-8.5.100/webapps/ROOT中。bbs解压…

Blender雕刻建模_笔画,镜像,动态拓扑

笔画 笔画选项&#xff0c;一般是对刷子&#xff08;自由线&#xff09;工具设置 描边方法如下&#xff1a;标红的为常用 -间隔&#xff1a;按一定间隔应用笔画的结果 例如&#xff1a;笔刷半径50&#xff0c;笔画间隔100%&#xff08;笔刷直径的百分比&#xff09;&#x…

Git项目管理——提交项目和版本回退(二)

个人名片&#xff1a; &#x1f393;作者简介&#xff1a;嵌入式领域优质创作者&#x1f310;个人主页&#xff1a;妄北y &#x1f4de;个人QQ&#xff1a;2061314755 &#x1f48c;个人邮箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;个人微信&#xff1a;Vir2025WB…