Vue前端开发-数据缓存

完成全局性的axios实例对象配置后,则可以在任意一个组件中直接调用这个对象,发送异步请求,获取服务端返回的数据,同时,针对那些不经常变化的数据,可以在请求过程中,进行数据缓存,并根据设定的缓存时长,定时更新数据,接下来进行详细介绍。

一、请求数据

配置好全局性的axios实例对象后,请求数据就变得十分简单,只需在组件中,通过this这个对象,调用$http属性,就可以获取配置好的axios实例化对象,再通过这个对象发送异步请求,并在then函数中获取响应的数据,下面通过一个完整的实例来演示请求过程。

实例9-1 请求数据

1. 功能描述

在首页中,当点击左侧菜单的“数据请求”链接时,则在页面右侧进入路径为“/d-1”对应的组件,在组件中当点击“发送请求”按钮时,调用全局的axios实例对象,根据指定的请求地址,发送异步请求,并将返回的数据显示在元素中。

2. 实现代码

在项目的components 文件夹中,添加一个名为“BaseRequest”的.vue文件,该文件的保存路径是“components/ch9/”,在文件中加入如清单9-1所示代码。

代码清单9-1 BaseRequest.vue代码

<template><div class="iframe"><div class="i-left"><span>返回值:</span><span>{{ data }}</span></div></div><div class="iframe"><div class="i-left"><button @click="onSendRequest">发送请求</button></div></div>
</template>
<script>
export default {data() {return {data: ""}},methods: {onSendRequest() {this.data = "loading...";this.$http.get('/?day=1-1').then(d => {this.data = d.data})}}
}
</script>
<style>
.iframe {width: 300px;display: flex;justify-content: space-between;align-items: center;padding: 16px 8px;border: solid 1px #ccc;
}.i-left {display: flex;align-items: center;
}.iframe:last-child {border-top: none;background-color: #eee;
}
</style>

为了配置全局性的axios实例化对象,先在项目的components 文件夹中,添加一个名称为“axios”的js文件,该文件的保存路径是“components/plugins/”,并在文件中加入如清单9-2所示代码。

代码清单9-2 axios.js代码

import axios from "axios";
const request = axios.create({baseURL: "http://rttop.cn/api",timeout: 2000
})
export default request;

创建并导出axios对象后,还需要将该对象挂载到新建的app应用中,因此,需要将入口文件main.js进行如代码清单9-3所示的修改。

代码清单9-3 main.js代码

import { createApp } from 'vue'
import App from './App.vue'
import Global from './components/ch6/Global'
import router from './router/index'
import request from './plugins/axios';
let app = createApp(App);
app.config.globalProperties.$http = request;
app.component("Global", Global);
app.use(router);
app.mount('#app')

为了实现点击“数据请求”链接后路由跳转的功能,需要向配置的路由对象中添加新的路径与组件对应关系,在目录“components/router/”下,打开index.js文件,新添加如代码清单9-4所示的加粗部分内容。

代码清单9-4 index.js代码

import { createRouter, createWebHistory } from 'vue-router';
// 配置组件对应路径
const routes = [{path: '/d-1',name: 'd-1',component: () => 
import('../components/ch9/BaseRequest.vue')}// 省略部分其他代码
]
const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes
})
export default router

最后,在默认入口组件App.vue中,添加链接和router-view元素,当点击左侧“数据请求”链接后,在右侧的router-view元素中,加载路径对应的组件,该文件的完整代码如下列代码清单9-5所示。

代码清单9-5 App.vue代码

<template><div class="frame"><div class="f-left"><router-link to="/d-1">数据请求</router-link></div><div class="f-right"><router-view></router-view></div></div>
</template>
<script>
export default {name: "App",data() {return {}}
};
</script>
<style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: #2c3e50;
}nav {color: #666;margin: 5px 0;font-size: 13px;
}
a{text-decoration: none;
}
.frame{display: flex;
}
.frame .f-left{width: 120px;padding: 10px;
}
</style>

3. 页面效果

保存代码后,页面在Chrome浏览器下执行的页面效果如图9-6所示。
在这里插入图片描述
4. 源码分析

在数据请求组件BaseRequest.vue中,当用户点击“数据请求”按钮后,触发按钮的单击事件,并执行单击事件函数,在函数中,首先修改data状态变量值,由于在发送异步请求时,无法立即响应,因此,在请求过程中,通常使用一个状态变量,告知用户请求的状态。

然后,再通过this访全局性的axios对象,并调用该对象的别名get,以GET方式,根据指定的URL地址,发送异步的请求,最后,当请求成功时,触发then方法中的第一个回调函数,并在回调函数中获取到服务端返回的数据d,并更新到状态变量data中。

需要说明的是:then方法中有两个回调函数,第一个是请求成功时被执行,第二个是请求失败时执行,因此,考虑到请求失败的可能性,then方法中的代码应修改成如下代码所示:

this.$http.get('/?day=1-1').then(d => {
this.data = d.data
}, err => {console.log(err.message)
})

在这里插入图片描述

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

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

相关文章

Qt for Python (PySide6)设置程序图标和任务栏图标

环境 使用Qt for Python开发Windows应用程序。 Python版本&#xff1a;3.12 Qt版本&#xff1a;PySide6 前言 先上一个简单的测试程序 from PySide6.QtWidgets import QMainWindow,QLabel,QApplication from PySide6 import QtGui import sysclass MainWindow(QMainWindow)…

MySQL基础笔记(三)

在此特别感谢尚硅谷-康师傅的MySQL精品教程 获取更好的阅读体验请前往我的博客主站! 如果本文对你的学习有帮助&#xff0c;请多多点赞、评论、收藏&#xff0c;你们的反馈是我更新最大的动力&#xff01; 创建和管理表 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数…

FlashAttention理解

参考&#xff1a;https://github.com/Dao-AILab/flash-attention 文章目录 一、FlashAttention理解1. FlashAttention的特点&#xff1a;2. 工作原理3. 安装4. 代码示例5. flash_attn_func 参数说明6. 适用场景7. 总结 二、FlashAttention 1.X 2.X 3.X版本的区别与联系1. **Fla…

网络安全渗透有什么常见的漏洞吗?

弱口令与密码安全问题 THINKMO 01 暴力破解登录&#xff08;Weak Password Attack&#xff09; 在某次渗透测试中&#xff0c;测试人员发现一个网站的后台管理系统使用了非常简单的密码 admin123&#xff0c;而且用户名也是常见的 admin。那么攻击者就可以通过暴力破解工具&…

OpenCV基本图像处理操作(三)——图像轮廓

轮廓 cv2.findContours(img,mode,method) mode:轮廓检索模式 RETR_EXTERNAL &#xff1a;只检索最外面的轮廓&#xff1b;RETR_LIST&#xff1a;检索所有的轮廓&#xff0c;并将其保存到一条链表当中&#xff1b;RETR_CCOMP&#xff1a;检索所有的轮廓&#xff0c;并将他们组…

建投数据与腾讯云数据库TDSQL完成产品兼容性互认证

近日&#xff0c;经与腾讯云联合测试&#xff0c;建投数据自主研发的人力资源信息管理系统V3.0、招聘管理系统V3.0、绩效管理系统V2.0、培训管理系统V3.0通过腾讯云数据库TDSQL的技术认证&#xff0c;符合腾讯企业标准的要求&#xff0c;产品兼容性良好&#xff0c;性能卓越。 …

armsom产品Debian系统开发

第一章 构建 Debian Linux 系统 我们需要按【armsom产品编译&烧录Linux固件】全自动编译一次&#xff0c;默认是编译 Buildroot 系统&#xff0c;也会编 译 uboot 和内核&#xff0c;buildroot 某些软件包依赖内核&#xff0c;所以我们必须编译内核再编译 Buildroot。同 理…

[Linux] 进程信号概念 | 信号产生

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 为什么我的课设这么难…

小程序测试的测试内容有哪些?

在数字化快速发展的今天&#xff0c;小程序成为了很多企业进行产品推广和服务互动的重要平台。小程序的广泛应用使得对其质量的要求越来越高&#xff0c;小程序测试应运而生。这一过程不仅涉及功能的准确性&#xff0c;更涵盖了用户体验、性能、安全等多个维度。 小程序测试的…

使用 NVIDIA DALI 计算视频的光流

引言 光流&#xff08;Optical Flow&#xff09;是计算机视觉中的一种技术&#xff0c;主要用于估计视频中连续帧之间的运动信息。它通过分析像素在时间维度上的移动来预测运动场&#xff0c;广泛应用于目标跟踪、动作识别、视频稳定等领域。 光流的计算传统上依赖 CPU 或 GP…

微积分复习笔记 Calculus Volume 2 - 4.4 The Logistic Equation

4.4 The Logistic Equation - Calculus Volume 2 | OpenStax

双指针---有效三角形的个数

这里写自定义目录标题 题目链接 [有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/description/)问题分析代码解决执行用时 题目链接 有效三角形的个数 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例…

【Linux】usb内核设备信息

usb内核设备信息 Linux内核中USB设备信息及拓扑结构可以从/sys/kernel/debug/usb/devices和/sys/bus/usb/devices中获取&#xff0c;下面介绍这些信息如何解读。 通过usbdump函数打印usb信息 [drivers/usb/core/devices.c] #define ALLOW_SERIAL_NUMBER/* Bus: 总线编号 Lev:…

Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总

背景 在实际开发中&#xff0c;我发现团队对于这几个路径的设置上是纯靠猜的&#xff0c;通过一点点地尝试来找到可行的路径&#xff0c;这是不应该的&#xff0c;我们应该很清晰地了解这几个概念&#xff0c;以下通过截图和代码进行细节讲解。 npm run dev 下的路径如何处理&…

devops和ICCID简介

Devops DevOps&#xff08;Development 和 Operations 的组合&#xff09;是一种软件开发和 IT 运维的哲学&#xff0c;旨在促进开发、技术运营和质量保障&#xff08;QA&#xff09;部门之间的沟通、协作与整合。它强调自动化流程&#xff0c;持续集成&#xff08;CI&#xf…

[HNCTF 2022 Week1]baby_rsa

源代码&#xff1a; from Crypto.Util.number import bytes_to_long, getPrime from gmpy2 import * from secret import flag m bytes_to_long(flag) p getPrime(128) q getPrime(128) n p * q e 65537 c pow(m,e,n) print(n,c) # 62193160459999883112594854240161159…

12.19问答解析

概述 某中小型企业有四个部门&#xff0c;分别是市场部、行政部、研发部和工程部&#xff0c;请合理规划IP地址和VLAN&#xff0c;实现企业内部能够互联互通&#xff0c;同时要求市场部、行政部和工程部能够访问外网环境(要求使用OSPF协议)&#xff0c;研发部不能访问外网环境…

生态学研究中,森林生态系统的结构、功能与稳定性是核心研究

在生态学研究中&#xff0c;森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性&#xff0c;还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…

springboot445新冠物资管理(论文+源码)_kaic

摘 要 使用旧方法对新冠物资管理的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在新冠物资管理的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发的新冠物资管…

1.zabbix概述

一、什么是监控 我们的生活里&#xff0c;离不开监控&#xff0c;监控能够最大程度上&#xff0c;发挥如下作用 实时监测&#xff0c;即使你不在电脑前&#xff0c;也能实时掌握监控区域情况&#xff0c;提高工作效率事后录像查询&#xff0c;如果不法事件未能即使发现制止&am…