基于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 相关文章推荐
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
Feb 02 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
d3.js入门教程之数据绑定详解
Apr 28 Javascript
微信小程序中做用户登录与登录态维护的实现详解
May 17 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
Jan 22 Javascript
小程序点赞收藏功能的实现代码示例
Sep 07 Javascript
Vue中的v-for指令不起效果的解决方法
Sep 27 Javascript
详解vue中v-bind:style效果的自定义指令
Jan 21 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
JavaScript代码简化技巧实例解析
Sep 09 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 Javascript
element多个表单校验的实现
May 27 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP多进程编程实例
2014/10/15 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
让焦点自动跳转
2006/07/01 Javascript
如何实现浏览器上的右键菜单
2006/07/10 Javascript
javascript 框架小结 个人工作经验
2009/06/13 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
使用python远程操作linux过程解析
2019/12/04 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
安全教育实施方案
2014/03/02 职场文书
老公保证书范文
2014/04/29 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android