基于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 相关文章推荐
农历与西历对照
Sep 06 Javascript
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
JavaScript 解析读取XML文档 实例代码
Jul 07 Javascript
基于jquery的返回顶部效果(兼容IE6)
Jan 17 Javascript
不要使用jQuery触发原生事件的方法
Mar 03 Javascript
js通过location.search来获取页面传来的参数
Sep 11 Javascript
浅谈jquery事件处理
Apr 24 Javascript
javascript 使用for循环时该注意的问题-附问题总结
Aug 19 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
Sep 25 Javascript
前端 Vue.js 和 MVVM 详细介绍
Dec 29 Javascript
无循环 JavaScript(map、reduce、filter和find)
Apr 08 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 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
介绍几个array库的新函数 php
2006/12/29 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
python实现socket端口重定向示例
2014/02/10 Python
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Pycharm安装python库的方法
2020/11/24 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
装饰资料员岗位职责
2013/12/30 职场文书
酒店总经理欢迎词
2014/01/08 职场文书
公司庆典活动邀请函
2014/01/09 职场文书
购房意向书
2014/08/30 职场文书
科学发展观演讲稿
2014/09/11 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
工作证明格式范文
2015/06/15 职场文书
Python利用folium实现地图可视化
2021/05/23 Python
JS setTimeout与setInterval的区别
2022/04/20 Javascript
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android