Vue+axios 实现http拦截及路由拦截实例


Posted in Javascript onApril 25, 2017

现如今,每个前端对于Vue都不会陌生,Vue框架是如今最流行的前端框架之一,其势头直追react.最近我用vue做了一个项目,下面便是我从中取得的一点收获.

基于现在用vue+webpack搭建项目的文档已经有很多了,我就不再累述了.

技术栈

  1. vue2.0
  2. vue-router
  3. axios

拦截器

首先我们要明白设置拦截器的目的是什么,当我们需要统一处理http请求和响应时我们通过设置拦截器处理方便很多.

这个项目我引入了element ui框架,所以我是结合element中loading和message组件来处理的.我们可以单独建立一个http的js文件处理axios,再到main.js中引入.

/**
 * http配置
 */
// 引入axios以及element ui中的loading和message组件
import axios from 'axios'
import { Loading, Message } from 'element-ui'
// 超时时间
axios.defaults.timeout = 5000
// http请求拦截器
var loadinginstace
axios.interceptors.request.use(config => {
 // element ui Loading方法
 loadinginstace = Loading.service({ fullscreen: true })
 return config
}, error => {
 loadinginstace.close()
 Message.error({
 message: '加载超时'
 })
 return Promise.reject(error)
})
// http响应拦截器
axios.interceptors.response.use(data => {// 响应成功关闭loading
 loadinginstace.close()
 return data
}, error => {
 loadinginstace.close()
 Message.error({
 message: '加载失败'
 })
 return Promise.reject(error)
})

export default axios

这样我们就统一处理了http请求和响应的拦截.当然我们可以根据具体的业务要求更改拦截中的处理.

路由拦截

我们可以通过路由拦截做什么?我认为最主要的便是对权限的控制,比如有的页面需要登录了才能进入,有些页面不同身份渲染不同.接下来简单的讲一下登录拦截.

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

const router = new Router({
 routes: [
 {
  path: '/',
  /*
  * 按需加载 
  */
  component: (resolve) => {
  require(['../components/Home'], resolve)
  }
 }, {
  path: '/record',
  name: 'record',
  component: (resolve) => {
  require(['../components/Record'], resolve)
  }
 }, {
  path: '/Register',
  name: 'Register',
  component: (resolve) => {
  require(['../components/Register'], resolve)
  }
 }, {
  path: '/Luck',
  name: 'Luck', 
  // 需要登录才能进入的页面可以增加一个meta属性
  meta: { 
  requireAuth: true
  },
  component: (resolve) => {
  require(['../components/luck28/Luck'], resolve)
  }
 }
 ]
})
// 判断是否需要登录权限 以及是否登录
router.beforeEach((to, from, next) => {
 if (to.matched.some(res => res.meta.requireAuth)) {// 判断是否需要登录权限
 if (localStorage.getItem('username')) {// 判断是否登录
  next()
 } else {// 没登录则跳转到登录界面
  next({
  path: '/Register',
  query: {redirect: to.fullPath}
  })
 }
 } else {
 next()
 }
})

export default router

这样就做好了登录拦截.我们只需在main.js中引入router就可以了.

实现权限的控制我们还可以通过Vuex来实现,但是如果是小型项目就没必要引入Vuex了.

以上是我做项目过程中的一些收获,由于入Vue的坑也才两月不到,有些地方可能有不足之处,欢迎大家指正,我会悉心听取.也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
点击广告后才能获得下载地址
Oct 26 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
js获取对象为null的解决方法
Nov 21 Javascript
javascript获取以及设置光标位置
Feb 16 Javascript
js编写选项卡效果
May 23 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
Dec 05 Javascript
使用JavaScript破解web
Sep 28 Javascript
微信小程序实现的五星评价功能示例
Apr 25 Javascript
js实现随机点名器精简版
Jun 29 Javascript
原生js实现照片墙效果
Oct 13 Javascript
JavaScript动态生成表格的示例
Nov 02 Javascript
vuejs如何配置less
Apr 25 #Javascript
微信小程序访问node.js接口服务器搭建教程
Apr 25 #Javascript
微信小程序中显示html格式内容的方法
Apr 25 #Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 #Javascript
详解Vue 动态添加模板的几种方法
Apr 25 #Javascript
详解vue-cli + webpack 多页面实例应用
Apr 25 #Javascript
基于Vue实现timepicker
Apr 25 #Javascript
You might like
探讨:如何编写PHP扩展
2013/06/13 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
jQuery 位置插件
2008/12/25 Javascript
javascript 写类方式之六
2009/07/05 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
python缩进区别分析
2014/02/15 Python
Python中if __name__ == "__main__"详细解释
2014/10/21 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
python实现批量改文件名称的方法
2015/05/25 Python
Python抓取百度查询结果的方法
2015/07/08 Python
Python3最长回文子串算法示例
2019/03/04 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
设计毕业生简历中的自我评价
2013/10/01 职场文书
大学毕业通用个人的求职信
2013/12/08 职场文书
家长给老师的道歉信
2014/01/13 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
保研推荐信
2014/05/09 职场文书
自强之星事迹材料
2014/05/12 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
学校党员对照检查材料
2014/08/28 职场文书
党员批评与自我批评
2014/10/15 职场文书
道德与公民自我评价
2015/03/09 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle