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 相关文章推荐
jquery多浏览器捕捉回车事件代码
Jun 22 Javascript
Javascript中valueOf与toString区别浅析
Mar 19 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
Apr 03 Javascript
js限制input标签中只能输入中文
Jun 26 Javascript
浅析script标签中的defer与async属性
Nov 30 Javascript
基于JS实现的随机数字抽签实例
Dec 08 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
详解Vue使用命令行搭建单页面应用
May 24 Javascript
JS实现的JSON序列化操作简单示例
Jul 02 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
JavaScript数组 几个常用方法总结
Nov 11 Javascript
Vue.Draggable实现交换位置
Apr 07 Vue.js
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浮点数知识
2015/05/13 PHP
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
js微信分享API
2020/10/11 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
Python的迭代器和生成器使用实例
2015/01/14 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
20行python代码实现人脸识别
2019/05/05 Python
Django model select的多种用法详解
2019/07/16 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
Python之变量类型和if判断方式
2020/05/05 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
优秀广告词大全
2014/03/19 职场文书