【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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容