自学:用vue搭建权限管理项目前端(二)

260 阅读2分钟

工具模块封装

封装axios模块

背景

将重复性工作抽象出来封装为模块,便于代码维护和复用

要点

  • 1.url和api封装
  • 2.request和response拦截器
  • 3.axios封装成Vue插件使用

文件结构

src下新建http文件夹,存放http与api交互代码,结构如下
config.js:axios默认配置,基础路径信息等
axios.js:封装axios模块 包含请求和响应拦截以及请求处理
api.js: 所有请求汇总模块,聚合所有模块api
index.js: 将axios封装成插件,俺插件方式引入
modules:用户按模块划分api

src下再新建utils文件,存放通用js文件
global.js:存放常用全局配置、常量以及方法,通过this.global 调用
eg:后来服务器地址、后台备份服务器地址

main.js
1.导入API模块并使用Vue.use(api)进行注册,如此可通过"this.$api.子模块.方法"方式调用后台接口。
2.引入global模块,并通过Vue.prototype.global = global语句进行挂载,如此可通过this.global.xx 来获取全局配置

安装js-cooklie

axios.js中,用到Cookie取token,因此要下载相关依赖,

测试

注意点:

  • 1.用插件之前要在中引入插件方能使用
  • 2.mock模拟接口,端口号要跟global.js 文件中的baseUrk一致

一些代码的个人理解

  • 1.箭头函数
  • 参数与java不同,不需要先定义参数bean,可以直接(param) =>{}使用,param若是一个对象,具体包含属性可以直接假设调用,只要保证后续调用该函数时传进来的参数与形参格式相同即可。如 Mock.mock(new RegExp(url),res.type,(opts) =>{ opts['data'] = opts.body?JSON.parse(opts.body):null delete opts.body console.log('\n'); console.log('%cmock拦截,请求:','color:blue',opts); console.log('%cmock拦截,响应:','color:blue',res.data); return res.data }) opts是形参,假设存在属性body,只要保证后面调用该函数时入参包括即可