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 相关文章推荐
javascript 动态table添加colspan\rowspan 参数的方法
Jul 25 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
extjs4 treepanel动态改变行高度示例
Dec 17 Javascript
setInterval与clearInterval的使用示例代码
Jan 28 Javascript
jQuery实现自定义事件的方法
Apr 17 Javascript
jQuery实现网页顶部固定导航效果代码
Dec 24 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
Aug 25 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
Sep 27 Javascript
webpack项目调试以及独立打包配置文件的方法
Feb 28 Javascript
微信小程序用户信息encryptedData详解
Aug 24 Javascript
Vue实现点击箭头上下移动效果
Jun 11 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+Html+缓存
2006/12/20 PHP
PHP获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
python list格式数据excel导出方法
2018/10/31 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
Python字典对象实现原理详解
2019/07/01 Python
Python Subprocess模块原理及实例
2019/08/26 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
django 读取图片到页面实例
2020/03/27 Python
python实现斗地主分牌洗牌
2020/06/22 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
办理生育手续介绍信
2014/01/14 职场文书
大学学风建设方案
2014/05/04 职场文书
学习十八大的心得体会
2014/09/01 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
社区活动总结范文
2015/05/07 职场文书
员工福利申请报告
2015/05/15 职场文书