当前位置: 首页 > news >正文

基于axios的vue插件,让http请求更简单

ajax-plus

基于axios 的 Vue 插件

如何使用

npm 模块引入

首先通过 npm 安装

npm install --save ajax-plus
or
yarn add ajax-plus -S

然后在入口文件引入并配置:

对标axios的配置,详见axios?

import Vue from 'Vue'
// 引入
import ajaxPlus from 'ajax-plus'
// 配置
Vue.use(ajaxPlus, {
    //这里写一些ajax的option,详见axios文档,比如
    baseURL: "https://jsonplaceholder.typicode.com",
    timeout: 150000
})

示例

$ajaxPlus方法

在 Vue 组件上添加了 $ajaxPlus 方法, 使用如下:

// method可以为 get、delete、options、post、put、patch、head

// url为去除baseUrl的

// data为object

this.$ajaxPlus(method, url, data, res =>{
    //success call back code
})

//也可以省略data参数,直接写callback(鉴于有些请求不需要传参数)
this.$ajaxPlus(method, url, res =>{
    //success call back code
})

//$ajaxPlus已经在源码中处理catch容错了,假若想在代码里处理报错,再加一个参数,如下

this.$ajaxPlus(method, url, data, res =>{
    //success call back code
},{
    //catch是ajax请求失败后 要执行的代码
    //finallyCb是ajax请求结束后 要执行的代码,无论成功或者失败
    catchCb:()=>{//code}    
    finallyCb:()=>{//code}
})

以上catchCbfinallyCb几乎很少会用

ajax-plus中给vue全局mixin了一个loading变量,会在ajax请求结束后自动置为false,这个变量,你可以做一些ui层,比如按钮的防止高频功能

Vue.mixin({
    data () {
      return {
        loading: false
      }
    }
  })

如果你还要做其它相关操作 可以写在finallyCb中.

比如

<el-button :loading="loading1" @click="handleSubmit">按钮1</el-button>
handleSubmit(){
    this.$ajaxPlus('post','/submit',{foo:1, bar:2}, res=>{
        alert('提交成功了')
    },{
        catchCb:()=>{
            alert('提交失败了')
        },    
        finallyCb:()=>{
            //按钮置为可点击状态
            this.loading1 = false;
        }
    })
}

$ajax

也可以通过 this.$axios 来使用 axios 所有的 api 方法,如下:

this.$ajax.get(url, data).then(res =>{
  //拿到res了
})

this.$ajax.post(url, data).then( res =>{
  //拿到res了
})

try {
  const data = await this.$ajax.post(url, data)
} catch (error) {
  
}

由于前后端约定不一致,关于callback的更深层的处理并没有完善。

axiosroutervuex结合起来才能更强大,比如拦截器中根据status判断是否登陆,用户的鉴权可以和store结合,response的相关报错和相关ui的Diag、Message结合会更棒.

个人笔记

更多使用方式以及改写, 参考源码, 欢迎提意见。

相关文章:

  • 解决大并发的问题
  • 关于bootstrap框架美化的实例教程(python)
  • 如何使用Windows Library文件进行持久化
  • HTNL5列表,表格,音频,视频,iframe内联框架
  • forEach,for...of,map与asycn/await
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • jchdl - GSL实例 - DFlipFlop(D触发器)
  • webgl滤镜--会呼吸的痛
  • 区块链入门教程btcpool矿池源码分析环境搭建
  • 镁客网每周硬科技领域投融资汇总(10.21-10.27),AI芯片创企Syntiant获英特尔等头部企业投资...
  • zabbix介绍
  • 如何做需求分析
  • Netty Channel源码分析
  • VPC配置案例
  • 使用CefSharp的一些需要注意的点
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【刷算法】求1+2+3+...+n
  • Android 控件背景颜色处理
  • co.js - 让异步代码同步化
  • Date型的使用
  • gitlab-ci配置详解(一)
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • javascript 总结(常用工具类的封装)
  • java中的hashCode
  • jdbc就是这么简单
  • JS变量作用域
  • JS基础之数据类型、对象、原型、原型链、继承
  • miaov-React 最佳入门
  • nfs客户端进程变D,延伸linux的lock
  • overflow: hidden IE7无效
  • Python 基础起步 (十) 什么叫函数?
  • Spring Boot快速入门(一):Hello Spring Boot
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 搭建gitbook 和 访问权限认证
  • 聚类分析——Kmeans
  • 理清楚Vue的结构
  • 入手阿里云新服务器的部署NODE
  • 微信公众号开发小记——5.python微信红包
  • 一个完整Java Web项目背后的密码
  • 移动端唤起键盘时取消position:fixed定位
  • 鱼骨图 - 如何绘制?
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • NLPIR智能语义技术让大数据挖掘更简单
  • 如何在招聘中考核.NET架构师
  • ​​​​​​​​​​​​​​Γ函数
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #include
  • #QT(一种朴素的计算器实现方法)
  • (2)Java 简介
  • (9)目标检测_SSD的原理
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (ZT)出版业改革:该死的死,该生的生
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)负载均衡,回话保持,cookie