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 相关文章推荐
js批量设置样式的三种方法不推荐使用with
Feb 25 Javascript
JS实现点击下载的小例子
Jul 10 Javascript
原生javascript图片自动或手动切换示例附演示源码
Sep 04 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
Aug 19 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
webpack实现热更新(实施同步刷新)
Jul 28 Javascript
JavaScript中错误正确处理方式小结你用对了吗
Oct 10 Javascript
2种简单的js倒计时方式
Oct 20 Javascript
利用three.js画一个3D立体的正方体示例代码
Nov 19 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
Apr 20 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
了解在JavaScript中将值转换为字符串的5种方法
Jun 06 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类
2006/07/15 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
python实现apahce网站日志分析示例
2014/04/02 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
Python新手学习raise用法
2020/06/03 Python
python speech模块的使用方法
2020/09/09 Python
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
行政经理岗位职责
2013/11/09 职场文书
出纳岗位职责
2013/11/09 职场文书
期末学生评语大全
2014/04/24 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
教师党员自我评价2015
2015/03/04 职场文书
2019年工作总结范文
2019/05/21 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB