在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource。
尤大原话:https://github.com/vuefe/vuefe.github.io/issues/186
目前主流的 Vue 项目,都选择 axios 来完成 ajax 请求,下面来具体介绍一下axios的使用。
axios 中文文档 翻译:http://dev.dafan.info/detail/321459?p=18
另外一篇:http://www.jianshu.com/p/df464b26ae58
axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:
- 从浏览器中创建 XMLHttpRequest
- 从 node.js 发出 http 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求和响应数据
- 取消请求
- 自动转换JSON数据
- 客户端支持防止 CSRF/XSRF
安装其他插件的时候,可以直接在 main.js 中引入并使用 Vue.use()来注册,但是 axios并不是vue插件,所以不能 使用Vue.use(),所以只能在每个需要发送请求的组件中即时引入。
还有,axios 并不属于 Vue 的插件,框架与 HTTP 库本身没有必然的归属性关系,只要实现了 HTTP 标准,都可以在任意框架中使用
为了解决这个问题,我们在引入 axios 之后,通过修改原型链,来更方便的使用
想要用 this 调用的话,可以绑定到 Vue.prototype
上
import Vue from 'vue';
import axios from 'axios';
Vue.prototype.$http = axios;
使用:this.$http.get() ...
其实 Vue.prototype.$http = axios 类似于vue-resource 的调用方法,之后可以在实例里直接用this.$http.get()等