vue的全局变量和全局拦截请求器的示例代码


Posted in Javascript onSeptember 13, 2018

做的产品证书管理系统使用的是VueJs和ElementUI,现将遇到的一些知识点记录一下。

VUe全局变量的实现

全局变量专用模块Global.vue是以一个特定模块来组织管理全局变量,需要引用的地方导入该模块即可。使用方法如下:
将全局变量模块挂载到Vue.prototype里,在程序入口的main.js里加下面代码:

import Global from '../components/Global.vue'
Vue.prototype.global = Global

挂载后,在需要引用全局变量的模块时,不需要再导入全局变量模块,直接用this引用即可。 如:this.global.notifySuccess()

Vue的全局请求拦截器

在全局变量专用模块Global.vue中设置全局Vue请求拦截器,以在全局拦截器中添加请求超时的方法为例,若请求超时则取消此次请求,并提示用户。请求超时设置通过拦截器Vue.http.interceptors实现具体代码如下

Vue.http.interceptors.push((request,next) => {
  let timeout
  // 如果某个请求设置了_timeout,那么超过该时间,该终端会(abort)请求,并执行请求设置的钩子函数onTimeout方法,不会执行then方法。
  if (request._timeout) {
   timeout = setTimeout(() =>{
    if (request.onTimeout) {
     request.onTimeout(request)
     request.abort()
     }
    }, request._timeout)
  }
  next((response) => {
   clearTimeout(timeout)
   return response
   })
 })

当页面中用到vue-resource请求的地方设置如下即可:

this.$http.get('url',{
    params:{.......},
    ......
    _timeout:3000,
    onTimeout: (request) => {
      alert("请求超时");
    }
  }).then((response)=>{
});

Vue的全局守卫

全局路由守卫是指在路由跳转时对登录状态进行检查。可以使用router.beforeEach注册一个全局前置守卫:

const router = new VueRouter({…})
Router.beforeEach((to,from,next)=> { …})

当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫resolve完之前一直处于等待中。每个守卫方法接收三个参数:

  • to:Route即将要进入的目标,即路由对象;
  • from:Route当前导航正要离开的路由;
  • next:Function:一定要调用该方法来resolve这个钩子。执行效果依赖next方法的调用参数。

使用实例如下:

// 全局路由守卫,路由时检查用户是否登录,若无登录信息,指向登录界面
router.beforeEach((to, from, next) => {
  const nextRoute = ['AdminIndex','系统设置', '产品管理', '客户管理', '证书管理', '日志管理']
  if (nextRoute.indexOf(to.name)>= 0) {
    if (sessionStorage.getItem('username')){
      next()
    } else {
      window.location.replace('/login.html')
    }
  } else {
   next()
  }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript之解决IE下不渲染的bug
Jun 29 Javascript
突发奇想的一个jquery插件
Nov 19 Javascript
jquery连缀语法如何实现
Nov 29 Javascript
JQuery写动态树示例代码
Jul 31 Javascript
js中方法重载如何实现?以及函数的参数问题
Aug 01 Javascript
子页向父页传值示例
Nov 27 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
理解javascript对象继承
Apr 17 Javascript
d3.js入门教程之数据绑定详解
Apr 28 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
Dec 04 Javascript
代码详解JS操作剪贴板
Feb 11 Javascript
ios设备中angularjs无法改变页面title的解决方法
Sep 13 #Javascript
vue interceptor 使用教程实例详解
Sep 13 #Javascript
Vue点击切换颜色的方法
Sep 13 #Javascript
node中的cookie的具体使用
Sep 13 #Javascript
vue动态改变背景图片demo分享
Sep 13 #Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
Sep 13 #Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
Sep 13 #Javascript
You might like
php对图像的各种处理函数代码小结
2013/07/08 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
新闻内页-JS分页
2006/06/07 Javascript
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
javascript中this关键字详解
2016/12/12 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
Python中的面向接口编程示例详解
2021/01/17 Python
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
医院实习介绍信
2014/01/12 职场文书
城管大队整治方案
2014/05/06 职场文书
安全宣传标语
2014/06/10 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python