基于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 版
Mar 24 Javascript
比较简单实用的使用正则三种版本的js去空格处理方法
Nov 18 Javascript
给jQuery方法添加回调函数一款插件的应用
Jan 21 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
Sep 25 Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 Javascript
node.js中的buffer.length方法使用说明
Dec 14 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
Jul 28 Javascript
JavaScript 隐性类型转换步骤浅析
Mar 15 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
Dec 20 Javascript
vuex实现及简略解析(小结)
Mar 01 Javascript
Openlayers显示瓦片网格信息的方法
Sep 28 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP5/ZendEngine2的改进
2006/10/09 PHP
使用php来实现网络服务
2009/09/15 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
PHP简单遍历对象示例
2016/09/28 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
python3编写C/S网络程序实例教程
2014/08/25 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
python中xlrd模块的使用详解
2021/02/01 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
什么是GWT的Module
2013/01/20 面试题
建筑公司员工自我鉴定
2014/04/08 职场文书
好的促销活动方案
2014/08/21 职场文书
党员转正党支部意见
2015/06/02 职场文书
今日说法观后感
2015/06/08 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
Python中字符串对象语法分享
2022/02/24 Python
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android