基于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 相关文章推荐
地震发生中逃生十大法则
May 12 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
Mar 01 Javascript
js里的prototype使用示例
Nov 19 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
Jul 10 Javascript
javascript实现控制浏览器全屏
Mar 30 Javascript
js图片轮播特效代码分享
Sep 07 Javascript
AngularJS directive返回对象属性详解
Mar 28 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
Oct 21 Javascript
js实现购物车功能
Jun 12 Javascript
node.js微信小程序配置消息推送的实现
Feb 13 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
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 cron中的批处理
2008/09/16 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
php实现的SESSION类
2014/12/02 PHP
培养自己的php编码规范
2015/09/28 PHP
PHP序列化操作方法分析
2016/09/28 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
vue实现跨域的方法分析
2019/05/21 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
Python3获取cookie常用三种方案
2020/10/05 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
总经理岗位职责描述
2014/02/08 职场文书
股指期货心得体会
2014/09/13 职场文书
2014年招生工作总结
2014/11/26 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL