【axios源码】axios目录结构

axios源码:https://github.com/axios/axios.git
版本:0.19.1
它的核心代码在axios-master/lib目录下。

1.adapters

1.1 xhr.js

这个文件是关于封装ajax请求的部分,详细见https://www.jianshu.com/p/7ccb563e8740

1.2 http.js

这个文件是封装nodejs发送http请求的部分(只考虑浏览器版本,忽略)

2. cancel

这部分细节见https://www.jianshu.com/p/e954b9894a51

2.1 Cancel.js

这个文件是【取消请求异常】类

2.2 CancelToken.js

这个文件是取消请求的核心逻辑封装

2.3 isCancel.js

这个文件是判断【取消请求异常】

3. core

3.1 Axios.js

这个文件是Axios类的所有东西,它包含Axios里面的变量和函数。细节见https://www.jianshu.com/p/436b56016967

3.2 buildFullPath.js

这个文件就只有一个函数,它用于创建一个完整的路径。细节见https://www.jianshu.com/p/7ccb563e8740的3.4节拼接fullpath考虑各个地址的边界问题

3.3 createError.js

这个文件只有一个函数,它是用于创建异常的函数。

3.4 dispatchRequest.js

这个文件只有一个函数,分发请求函数。它在发送请求之前和之后对数据进行了处理。

3.5 enhanceError.js

这个文件只有一个函数,也是创建异常相关,createError调用它对Error扩展,让其包含更多信息。

3.6 InterceptorManager.js

拦截器类的实现

3.7 mergeConfig.js

合并config的实现

3.8 settle.js

只有一个函数,发送ajax请求readyState为4且status不为0时调用它。它根据status返回正常数据或者抛出异常。

3.9 transformData.js

只有一个函数,并且是工具函数,它的作用是给他data和函数数组,它把data作为参数分别放到每个函数里面执行一次,并且每次执行传入的都是上一个函数返回的data。

4. helpers

4.1 bind.js

输入函数和参数,输出一个函数,这个函数的this是前面的参数。作用参考function.property.bind。

4.2 buildURL.js

将原始url和需要放在url里面的参数拼成一个完整的url。具体见https://www.jianshu.com/p/7ccb563e8740
3.5 params拼接考虑很多可能出现的情况

4.3 combineURLs.js

将基础url和相对url连接的方法。是buildFullPath的一部分

4.4 cookies.js

对cookies操作的一些封装

4.5 deprecatedMethod.js

没看到哪里调用它,可能与项目无关,它的功能是版本更新之后某些函数可能不用了 给个提示

4.6 isAbsoluteURL.js

判断url是否是绝对url。也是是buildFullPath的一部分

4.7 isURLSameOrigin.js

返回一个函数,用其判断请求的url是否同源(host和端口号都一致)

4.8 isValidXss.js

判断url是否是JavaScript函数

4.9 normalizeHeaderName.js

请求头的标准化,如果请求头某个属性大小写不规范,那么将其标准化。

4.10 parseHeaders.js

将XMLHttpRequest.getAllheaders获取到的头部转换成对象形式,原始是字符串。

4.11 spread.js

详细见https://www.jianshu.com/p/3a2404ef55664.4节

5. axios.js

axios语法糖实现,以及功能扩展,详细见https://www.jianshu.com/p/3a2404ef5566

6. defaults.js

默认配置

7.utils.js

所有工具函数的集合,都是一些比较常用的函数

你可能感兴趣的:(【axios源码】axios目录结构)