基于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 jquery做的图片连续滚动代码
Jan 06 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
Feb 04 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
JavaScript的jQuery库中function的存在和参数问题
Aug 13 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
Jan 18 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
Apr 01 Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
Vue的Flux框架之Vuex状态管理器
Jul 30 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
Apr 29 Javascript
动态规划之使用备忘录来改进Javascript函数
Apr 07 Javascript
输入框跟随文字内容适配宽实现示例
Aug 14 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
收音机指标测试方法及仪器
2021/03/01 无线电
默默简单的写了一个模板引擎
2007/01/02 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
python实现证件照换底功能
2019/08/20 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
.NET remoting中对象激活的两种方式
2015/06/08 面试题
预备党员党校学习自我评价分享
2013/11/12 职场文书
营销总经理的岗位职责
2013/12/15 职场文书
母亲节演讲稿范文
2014/01/02 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android