axios - 9 - 暴露的函数
Axios 暴露的一些函数,能让我们更加简单的调用 Rest 风格的接口,那么是怎么暴露的呢?
console.info
该系类文章旨在研究 axios 的实现 。在研究源码的基础上,去理解 axios
是如何实现 ajax
请求并更好的去使用这个库。
简介
对应文件为 lib/axios.js
终于写到了最后,这个文件主要是对外暴露的 axios
方法,主要内容包括实例化 Axios
对象,并在此方法下绑定一些公用的方法。
代码分析
实例化 Axios 对象
对应代码为:
function createInstance(defaultConfig) {
var context = new Axios(defaultConfig);
// 绑定 request 函数的执行上下文后,取出函数
var instance = bind(Axios.prototype.request, context);
// 将 Axios 类下的方法绑定到 instance 对象上
// extend 函数的第三个参数为方法执行的上下文环境
utils.extend(instance, Axios.prototype, context);
// 将实例化出来的 context 对象下的属性绑定到 instance 上
utils.extend(instance, context);
// 返回
// 这样就能直接调用 request 函数
// 并且该函数拥有 Axios 实例对象的所有内容
return instance;
}
var axios = createInstance(defaults);
// 对外暴露 axios 方法
module.exports = axios;
绑定一些公有的方法
// 对外暴露 Axios 类对象
axios.Axios = Axios;
// 对外暴露 createInstance 方法,以便生成另一个 axios 对象
axios.create = function create(instanceConfig) {
return createInstance(utils.merge(defaults, instanceConfig));
};
// 暴露取消函数,在 config 配置 cancelToken 中有用到,用于主动取消请求
axios.Cancel = require('./cancel/Cancel');
axios.CancelToken = require('./cancel/CancelToken');
axios.isCancel = require('./cancel/isCancel');
// 暴露 all 方法
axios.all = function all(promises) {
return Promise.all(promises);
};
总结
关于 axios 这个请求库到此也就结束了,收益良多,有关于编程思想的,也有关于浏览器一些默认对象的,相信在今后在用这个库也能更加的得心应手。
