基于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读取ASP设定的COOKIE
Feb 15 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
jquery 为a标签绑定click事件示例代码
Jun 23 Javascript
jQuery实现判断滚动条到底部
Jun 23 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
利用纯JS实现像素逐渐显示的方法示例
Aug 14 Javascript
JavaScript中的E-mail 地址格式验证
Mar 28 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
浅析微信扫码登录原理(小结)
Oct 29 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
Jun 10 Javascript
使用webpack搭建vue项目及注意事项
Jun 10 Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 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创建多级目录代码
2008/06/05 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
如何使用php输出时间格式
2013/08/31 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
python命令行参数sys.argv使用示例
2014/01/28 Python
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
元宵晚会主持词
2014/03/25 职场文书
工程主管竞聘书
2015/09/15 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python