vue脚手架+elementUI,实现登录用户时的Loading...窗口

news2024/7/3 11:17:16

文章目录

  • App.vue
  • vuex全局变量
  • 登陆成功
    • Login组件使用
    • AboutMe组件中关闭
  • 登录失败情况
    • login组件中关闭
  • 改为aop思想的请求拦截器

App.vue

为了全局通用控制此标签,所以我建议把他放到App.vue文件中
在这里插入图片描述

    <!--全局加载ing,保证不会在转换组件时被销毁-->
    <el-table
        v-loading.fullscreen.lock="this.$store.state.fullscreenLoading"  element-loading-text="loading...">
    </el-table>

vuex全局变量

说到全局通用,肯定少不了全局变量

在这里插入图片描述

登陆成功

Login组件使用

发送请求时使用
当我们在login登陆后会跳转到aboutMe组件,所以Login组件会被销毁,这里就体现了全局变量的好处

在这里插入图片描述

AboutMe组件中关闭

在此组件加载成功时就证明登录成功了,我们做个2秒缓冲然后直接关闭loading即可
在这里插入图片描述

登录失败情况

login组件开启是一样的,当然我们不能在其他组件关闭了,我们需要在请求的then回调中关闭loading

login组件中关闭

不建议在异步中关闭,会报错,原因暂时不明
在这里插入图片描述

改为aop思想的请求拦截器

可以把login组件和aboutMe组件的请求事件、响应事件关闭,然后我们在封装请求里面使用拦截器非常方便

不过注意全局变量的导入和使用(js文件)

在这里插入图片描述

拦截器源码

//封装请求
import axios from "axios";
import store from "@/store";

//axios默认配置,作为生产环境使用
axios.defaults.method = 'GET' // 设置默认的请求类型为 GET
// axios.defaults.baseURL = 'http://43.142.56.133:81/' // 设置基础 URL
// axios.defaults.baseURL = 'http://8.130.19.162:81/' // 设置基础 URL
axios.defaults.baseURL = 'http://localhost:81/' // 设置基础 URL
axios.defaults.timeout = 10000 // 设置超时时间


const http = {
    // 添加请求拦截器
    interceptors: axios.interceptors.request.use(config => {
        //开启elementUi加载ing
        store.state.fullscreenLoading = true
        // 在请求发送之前做一些处理
        // 例如:给请求添加 Authorization 头部
        const token = localStorage.getItem('token');
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        return config;
    }, error => {
        // 处理请求错误
        return Promise.reject(error);
    }),


    get: function (url, params) {
        return axios.get(url, {params: params})
    },
    post: function (url, data, authorization) {
        const headers = {
            'Content-Type': 'application/json'
        };
        //判断是否需要Authorization
        if (authorization) {
            headers['Authorization'] = authorization;
        }
        return axios.post(url, data, {headers}
        )
    },

    // 添加响应拦截器
    interceptors: axios.interceptors.response.use(response => {
        setTimeout(() => {
            store.state.fullscreenLoading = false
        }, 2000)
        // 在响应数据之前做一些处理
        return response;
    }, error => {
        // 处理响应错误
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    // 未授权,需要重新登录
                    // 例如:跳转到登录页
                    break;
                case 403:
                    // 无权限访问
                    // 例如:提示用户无权限访问该资源
                    break;
                case 404:
                    // 请求的资源不存在
                    // 例如:跳转到 404 页面
                    break;
                default:
                    // 其他错误
                    // 例如:提示用户出错了
                    break;
            }
        } else {
            // 请求未发送,出现错误
            // 例如:提示用户出错了
        }
        return Promise.reject(error);
    }),
}

export default http

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

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

相关文章

Day965.从持续集成到持续部署 -遗留系统现代化实战

从持续集成到持续部署 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于从持续集成到持续部署的内容。 只有做好任务分解和小步提交&#xff0c;才能放心大胆地 PUSH 代码&#xff0c;触发持续构建&#xff1b; 只有通过质量门禁&#xff0c;才能得到一个有信心的制…

【Spring MVC】Spring MVC的执行流程以及运行原理

文章目录 一、 什么是MVC&#xff1f;二、什么是SpringMVC&#xff1f;三、SpringMVC中的核心组件四、SpringMVC的执行流程五、关于DispatcherServlet的配置说明六、关于SpringMVC的配置文件以及常用部分注解解释七、参考资料 一、 什么是MVC&#xff1f; MVC 是 Model、View …

软件工程的基础

软件危机软件工程软件工程是将系统化的&#xff0c;严格约束的&#xff0c;可量化的方法应用于软件的开发&#xff0c;运行和维护&#xff0c;将工程应用于软件。 软件工程的三个要素&#xff1a;方法&#xff0c;工具&#xff0c;过程软件的生命周期&#xff0c;是指从从软…

Vue列表展示【第二篇】

&#x1f331; 1、vue列表展示案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vueDemo02列表展示</title> </head> <body> <div id"xy"><!--原始展示方式…

深入篇【C++】类与对象:运算符重载详解 -(下)+日期类的实现

[TOC](深入篇【C】类与对象&#xff1a;运算符重载详解-(下&#xff09;日期类的实现&#x1f4af;干货满满&#xff01;) ⏰一.运算符重载 内置类型(int /double…… )是可以之间进行运算符之间的比较的&#xff0c;因为编译器知道它们之间的比较规则&#xff0c;可以之间转…

Linux下C/C++(端口扫描技术)

随着互联网使用的不断增加&#xff0c;网络攻击也在增加。互联网本质上已经成为现代。因此&#xff0c;了解互联网和使用互联网是非常重要的。网络技术的安全性在当今时代是非常重要和必要的。 在本文中&#xff0c;我们将讨论一个非常重要的主题&#xff0c;即可能破坏计算机…

es 7.x 通过DSL的常用查询语句

一 模拟造数 1.1 模拟数据 添加数据修改数据的请求方式为post http://localhost:9200/student/_doc/101 { "name":"zhangsan", "nickname":"zhangsan","sex":"男","age":30,"createTime":…

InnoDB线程模型

新版本结构演变 MySQL 5.7 版本 将 Undo日志表空间从共享表空间 ibdata 文件中分离出来&#xff0c;可以在安装 MySQL 时由用户自行指定文件大小和数量增加了 temporary 临时表空间&#xff0c;里面存储着临时表或临时查询结果集的数据Buffer Pool 大小可以动态修改&#xff0…

2.3 利用NumPy进行统计分析

2.3 利用NumPy进行统计分析 2.3.1 读/写文件1、二进制的文件读写2、读取文本格式的数据 2.3.2 使用数组进行简单统计分析1、排序2、去重与重复数据3、常用的统计函数 2.3.1 读/写文件 NumPy文件读写主要有二进制的文件读写和文件列表形式的数据读写两种形式 1、二进制的文件读…

代码随想录算法训练营第三十六天 | 重叠区间

435. 无重叠区间 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;贪心算法&#xff0c;依然是判断重叠区间 | LeetCode&#xff1a;435.无重叠区间_哔哩哔哩_bilibili 状态&#xff1a;能做出来&#xff0c;用的“补充(1)”的左边界排序&#xff0c…

SpringCloud —— eureka

目录 1.认识微服务 1.0.学习目标 1.1.单体架构 1.2.分布式架构 1.3.微服务 1.4.SpringCloud 1.5.总结 2.服务拆分和远程调用 2.1.服务拆分原则 2.2.服务拆分示例 2.2.1.导入Sql语句 2.2.2.导入demo工程 2.3.实现远程调用案例 2.3.1.案例需求&#xff1a; 2.3.2.注…

4. Mysql索引优化实战一

一条SQL在MySQL中是如何执行的 1. 示例表举一个大家不容易理解的综合例子 本文是按照自己的理解进行笔记总结&#xff0c;如有不正确的地方&#xff0c;还望大佬多多指点纠正&#xff0c;勿喷。 本节课内容&#xff1a; 索引下推优化详解Mysql优化器索引选择探究索引优化Order…

解决winstore下载mincraft 出现错误提示的问题,以及minecraft.exe出现此应用无法在你的电脑上运行的原因分析。

mincraft 点开显示此应用无法在你的电脑上运行&#xff0c;去C:\XboxGames\Minecraft Launcher\Content下看了下&#xff1a; 但是别人电脑上相同目录下一样的文件能运行&#xff0c;于是选择重装&#xff0c;但是刚开始下载就遇到这个问题&#xff1a; 商店提示这个 点开一…

Neural Network学习笔记2

torch.nn: Containers: 神经网络骨架 Convolution Layers 卷积层 Pooling Layers 池化层 Normalization Layers 正则化层 Non-linear Activations (weighted sum, nonlinearity) 非线性激活 Convolution Layers Conv2d torch.nn.Conv2d(in_channels, out_channels, ke…

Web缓存利用分析(三)

导语&#xff1a;前一篇文章介绍了Server Cache Poisoning在实际应用场景下&#xff0c;产生DOS攻击的利用方式。本篇文章则介绍Web Cache Deception在真实场景下的应用方式和测试情况。 前言 前一篇文章介绍了Server Cache Poisoning在实际应用场景下&#xff0c;产生DOS攻击…

产品经理入门书籍有哪些?

说到入门产品经理&#xff0c;应该看哪些书籍呢&#xff1f;下面咱们就从产品经理的各种能力维度来聊聊&#xff0c;这样更有针对性。 一、夯实产品经理的基础&#xff0c;建立产品思维 首先我们入行&#xff0c;要清楚产品经理具体的工作怎么做&#xff0c;比如&#xff1a;…

分享一个造成azkaban上传文件失败的案例

背景&#xff1a; 当初由于开发的需求&#xff0c;需要将传统方式部署azkaban以容器的方案部署&#xff0c;不但可以满足业务需求&#xff0c;还可以将用于构建的azkaban ECS虚拟机空闲出来&#xff0c;用作k8s节点。 但是在构建azkaban容器实例的时候由于azkaban参数配…

Flink第三章:基本操作(二)

系列文章目录 Flink第一章:环境搭建 Flink第二章:基本操作. Flink第三章:基本操作(二) 文章目录 系列文章目录前言一、物理分区1.shuffle(随机分区)2.Round-Robin(轮询)3.rescale(重缩放分区)4.broadcast(广播)5.Custom(自定义分区) 二、Sink1.写出到文件2.写入到Kafka3.写入到…

leetcode:203.移除链表元素(两种方法详解)

前言&#xff1a;内容包括-题目&#xff0c;代码实现&#xff08;两种方法&#xff09;&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 …

【CSS系列】第五章 · CSS文本属性

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…