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 应用类库代码
Jun 02 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
Jul 17 Javascript
使用jQuery将多条数据插入模态框的实现代码
Oct 08 Javascript
jquery动感漂浮导航菜单代码分享
Apr 15 Javascript
只需五句话搞定JavaScript作用域(经典)
Jul 26 Javascript
微信小程序 获取微信OpenId详解及实例代码
Oct 31 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
Dec 12 Javascript
jquery中done和then的区别(详解)
Dec 19 jQuery
使用live-server快速搭建本地服务器+自动刷新的方法
Mar 09 Javascript
vuex state及mapState的基础用法详解
Apr 19 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
Nov 15 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利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
Python微信操控itchat的方法
2019/05/31 Python
python识别验证码图片实例详解
2020/02/17 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
大学生大二自我鉴定
2013/10/28 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
事业单位年度考核评语
2014/12/31 职场文书
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS