基于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 相关文章推荐
JavaScript中的事件处理
Jan 16 Javascript
jquery 子窗口操作父窗口的代码
Sep 21 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
Jun 18 Javascript
js 上下左右键控制焦点(示例代码)
Dec 14 Javascript
Javascript基础教程之if条件语句
Jan 18 Javascript
JavaScript ES6中CLASS的使用详解
Nov 22 Javascript
基于jQuery实现弹幕APP
Feb 10 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
Mar 23 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
Jul 03 Javascript
javascript将非数值转换为数值
Sep 13 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 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
php验证码生成器
2017/05/24 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
Python3基于sax解析xml操作示例
2018/05/22 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
自动化专业毕业生自荐信
2013/11/01 职场文书
竞选班长演讲稿
2013/12/30 职场文书
房屋买卖协议书
2014/04/10 职场文书
技术股份合作协议书
2014/10/05 职场文书
老人节主持词
2015/07/04 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB