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

news2024/11/24 2:50:10

目录

前言

正文

一、初识路由

二、初识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.coloradmin.cn/o/1680746.html

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

相关文章

数据密码机独特的安全性能

数据密码机&#xff0c;作为一种专用的信息安全设备&#xff0c;在现代社会的各个领域中都发挥着至关重要的作用。它以其独特的加密技术和安全性能&#xff0c;为数据的传输和存储提供了坚实的保护屏障。 首先&#xff0c;数据密码机的工作原理是基于复杂的加密算法。这些算法能…

【Javaer学习Python】2、Django的MVT设计模式,完成CRUD小应用

系列文章&#xff1a;学习Python Django的MVT设计模式由Model(模型), View(视图) 和Template(模板)三部分组成&#xff0c;分别对应单个app目录下的models.py, views.py和templates文件夹。它们看似与MVC设计模式不太一致&#xff0c;其实本质是相同的&#xff1b; 实践是检验学…

Leetcode2391. 收集垃圾的最少总时间

Every day a Leetcode 题目来源&#xff1a;2391. 收集垃圾的最少总时间 解法1&#xff1a;前缀和 收集垃圾的时间分为两部分&#xff1a; 垃圾车收拾垃圾的时间&#xff1a;垃圾车收拾一单位的任何一种垃圾都需要花费 1 分钟。三辆垃圾车行驶的时间&#xff1a;每辆垃圾车…

24HN逆向部分wp

24H&N逆向部分wp 菜鸡新手师傅wp&#xff0c;Re 5/9&#xff0c;记录一下qaq&#xff08;好久没写博客了&#xff0c;水一篇hh&#xff09; 最喜欢的逆向题 64位&#xff0c;进主函数之后直接看&#xff0c;要求输入第5位为i&#xff0c;然后后面依次相等&#xff0c;长…

线性系统(一)

线性系统&#xff08;一&#xff09; 1.什么是线性系统2.高斯消元法3.高斯-约旦消元法4.线性方程组解的结构 链接: 线性系统&#xff08;二&#xff09; 1.什么是线性系统 线性&#xff1a;未知数只能是一次方项 非线性: 同时&#xff0c;读者也可以通过作图来更直观地感受&…

HNU-算法设计与分析-作业1

算法设计与分析 计科210X 甘晴void 202108010XXX 前言 这个系列本来想只用一个博客搞定的&#xff0c;谁曾想CSDN对于大批量文字的在线编辑一塌糊涂&#xff0c;感觉走倒车了。只能分成几个博客分别来讲了。后续会有作业-23456。作业重要的是搞懂原因。 文章目录 算法设计与…

怎么把图片改成300dpi?照片dpi调整方法

在进行印刷设计时&#xff0c;例如制作海报、宣传册、名片、杂志等&#xff0c;通常要求图片具有高分辨率&#xff0c;将图片分辨率设为300dpi可以确保图像在印刷过程中保持细节和清晰度&#xff0c;但是修改图片分辨率的方法有哪些呢?今天小编整理了几个关于改变图片分辨率的…

OpenAI王炸更新GPT-4o,具有极强的文本、图片、视频、语音混合理解能力

OpenAI刚刚发布了GPT-4o&#xff0c;这是一种新的人工智能模式&#xff0c;集合了文本、图片、视频、语音的全能模型。能够实时响应用户的需求&#xff0c;并通过语音来实时回答你&#xff0c;你可以随时打断它。还具有视觉能力&#xff0c;能识别视觉物体并根据视觉作出快速的…

使用Docker进行Jmeter分布式搭建

大家好&#xff0c;随着技术的不断发展&#xff0c;对性能测试的要求也日益提高。在这样的背景下&#xff0c;如何利用 Docker 来巧妙地搭建 Jmeter 分布式成为了关键所在。现在&#xff0c;就让我们开启这场探索之旅&#xff0c;揭开其神秘的面纱。前段时间给大家分享了关于 L…

Java ( 框架界面 , 按钮 , 动作监听ActionListener ,鼠标监听MouseListener,键盘监听KeyListener)的使用方法

package 拼图阶段任务.ui;import javax.swing.*; import java.awt.*; import java.awt.event.*;public class UseMethod {public static void main(String[] args) { // 框架的用法JFrame jf new JFrame();// 设置界面的宽高jf.setSize(603,680);// 设置界面的标题jf.setTitle…

k8s 二进制安装 详细安装步骤

目录 一 实验环境 二 操作系统初始化配置&#xff08;所有机器&#xff09; 1&#xff0c;关闭防火墙 2&#xff0c;关闭selinux 3&#xff0c;关闭swap 4, 根据规划设置主机名 5, 做域名映射 6&#xff0c;调整内核参数 7&#xff0c; 时间同步 三 部署 dock…

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

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

嵌入式——C51版本Keil环境搭建

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 目标搭建流程下载与安装激活STC环境添加校验是否导入STC环境 目标 ● 了解C51版本Keil开发环境的概念和用途 ● 掌握C51版本Keil环…

PG Vacuum 空间管理工具与pg_freespacemap使用

1.什么是Vacuum&#xff1a; PG pageinspect使用与块空间清理学习-CSDN博客 之前说过PG块更新的特点:先删除后插入&#xff0c;但老元组并不会真正删除&#xff0c;只是把老元组标记为删除状态&#xff0c;这就导致了PG中会有大量的垃圾数据&#xff0c;update所造成的资源消…

LeetCode518:零钱兑换Ⅱ

题目描述 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号…

进程信号 signal

文章目录 信号基础信号的产生OS中的时间 信号的保存sigset_tsigprocmasksigpending 信号的捕捉用户态和内核态sigactionvolatile SIGCHLD 信号基础 生活中的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临…

Blog搭建:pycharm+虚拟环境+django

pycharm创建项目 在pycharm新建项目&#xff0c;选择Django 项目名称&#xff1a;自定义项目位置&#xff1a;自定义创建git&#xff1a;方便上传到github选择虚拟环境方式venvpython解释器位置&#xff0c;和版本&#xff0c;如果你没有下载他会跳转到不同版本的供你下载temp…

分布式计算、并行计算、网格计算、边缘计算

分布式计算 分布式计算是一种计算方法&#xff0c;它将一个大型的计算任务分解成多个子任务&#xff0c;并将这些子任务分布在网络上的多台计算机&#xff08;节点&#xff09;上同时执行。这些节点通过通信网络协同工作&#xff0c;共同完成任务。每个节点可以独立处理自己的…

Skywalking配置traceId

1.引言 1.1 SkyWalking概述 SkyWalking是一个开源的分布式系统观测平台&#xff0c;旨在解决微服务和云原生架构中常见的性能监控和故障排除问题。自2015年由Apache基金会孵化以来&#xff0c;SkyWalking已经成为全球范围内广泛使用的APM&#xff08;应用性能管理&#xff09…

括号生成[中等]

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