基于vue+element实现全局loading过程详解


Posted in Javascript onJuly 10, 2020

项目中使用的是vue+element实现的全局loading

1.引入所需组件,这里主要就是router和element组件,element组件引入可以参考element官网

2.下面就是重点及代码实现了

首先是全局的一个变量配置参数,代码如下:

//全局页面跳转是否启用loading
export const routerLoading = true;

//全局api接口调用是否启用loading
export const apiLoading = true;

//loading参数配置
export const loadingConfig = {
 lock: true,
 text: 'Loading',
 spinner: 'el-icon-loading',
 background: 'rgba(0, 0, 0, 0.7)'
}

接下来是全局的一个loading简单封装,代码如下

import ElementUI from 'element-ui';
import {loadingConfig} from '../src/config/index' //全局的一个基本参数配置

var loading = null ;
const loadingShow = () => {
 loading = ElementUI.Loading.service(loadingConfig);
}

const loadingHide = () => {
 loading.close();
}

const loadingObj={
 loadingShow,
 loadingHide
}

export default loadingObj

页面跳转时全局配置loading,代码如下:

main.js中添加代码:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

import glo_loading from '../loading/index' //loading组件的简单封装
import {routerLoading} from '../src/config/index' //全局的页面跳转loading是否启用

Vue.use(ElementUI);

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 components: { App },
 template: '<App/>'
})

//从后台获取的用户角色
const role = 'user'
//当进入一个页面是会触发导航守卫 router.beforeEach 事件
router.beforeEach((to,from,next) => {
 routerLoading ? glo_loading.loadingShow() : '' //如果全局启用页面跳转则加载loading
 if(to.meta.roles){
  if(to.meta.roles.includes(role)){
   next() //放行
  }else{
   next({path:"/404"}) //跳到404页面
  }
 }else{
  next() //放行
 }
routerLoading ? glo_loading.loadingHide() : ''//关闭loading层
})

在ajax请求的时候调用全局loading,代码如下:

// 添加请求拦截器
service.interceptors.request.use(function (config) {
 // 在发送请求之前做些什么
 apiLoading ? glo_loading.loadingShow() : ''//全局loading是否启用
 return config;
}, function (error) {
 // 对请求错误做些什么
 console.log(error);
 return Promise.reject(error);
});

// 添加响应拦截器
service.interceptors.response.use(function (response) {
 // 对响应数据做点什么
 if(response.status == 200){
   return response.data;
 }else{
  Promise.reject();
 }
}, function (error) {
 // 对响应错误做点什么
 console.log(error);
 apiLoading ? glo_loading.loadingHide() : ''
 return Promise.reject(error);
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js中的屏蔽的使用示例
Jul 30 Javascript
jquery三个关闭弹出层的小示例
Nov 05 Javascript
js读取并解析JSON类型数据的方法
Nov 14 Javascript
js改变透明度实现轮播图的算法
Aug 24 Javascript
JavaScript中的ajax功能的概念和示例详解
Oct 17 Javascript
JS使用插件cryptojs进行加密解密数据实例
May 11 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
Sep 25 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
May 29 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
Oct 14 Javascript
JavaScript中的this/call/apply/bind的使用及区别
Mar 06 Javascript
小程序自定义弹框效果
Nov 16 Javascript
JavaScript canvas实现流星特效
May 20 Javascript
JS sort方法基于数组对象属性值排序
Jul 10 #Javascript
JavaScript this指向相关原理及实例解析
Jul 10 #Javascript
JavaScript indexOf()原理及使用方法详解
Jul 09 #Javascript
如何在postman测试用例中实现断言过程解析
Jul 09 #Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 #Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 #Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 #jQuery
You might like
PHP数组实例总结与说明
2011/08/23 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
php探针不显示内存解决方法
2019/09/17 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
JavaScript中URL编码函数代码
2011/01/11 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
js确定对象类型方法
2012/03/30 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
python调用shell的方法
2013/11/20 Python
基于Python os模块常用命令介绍
2017/11/03 Python
Python Pillow Image Invert
2019/01/22 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python实现飞行棋游戏
2020/02/05 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
小学优秀班集体申报材料
2014/05/25 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书