最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

axios庫(kù)的核心代碼解析及總結(jié)

 更新時(shí)間:2022年09月22日 11:48:06   作者:sunsetFeng  
這篇博客針對(duì)axios庫(kù)的核心代碼做一個(gè)簡(jiǎn)要總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、關(guān)鍵步驟

1.創(chuàng)建axios對(duì)象

axios庫(kù)導(dǎo)出的對(duì)象是一個(gè)已經(jīng)被創(chuàng)建好的axios對(duì)象,它本質(zhì)上是一個(gè)方法,可以直接接收一個(gè)config配置參數(shù)進(jìn)行請(qǐng)求。在庫(kù)的入口處,即可看到如下代碼:

function createInstance(defaultConfig) {
  // 傳入默認(rèn)配置生成axios對(duì)象
  const context = new Axios(defaultConfig);
  // 本質(zhì)是request方法,this上下文綁定context
  const instance = bind(Axios.prototype.request, context);
  // 將Axios原型上的屬性復(fù)制到instance
  utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});
  // 將context上的屬性復(fù)制到instance
  utils.extend(instance, context, {allOwnKeys: true});
  // 暴露create工廠方法供外部創(chuàng)建自定義的axios對(duì)象
  instance.create = function create(instanceConfig) {
    return createInstance(mergeConfig(defaultConfig, instanceConfig));
  };

  return instance;
}
// 默認(rèn)暴露的axios對(duì)象
const axios = createInstance(defaults);

上述代碼是創(chuàng)建默認(rèn)axios對(duì)象的流程,這個(gè)對(duì)象上有Axios類的實(shí)例屬性以及原型上的方法,且自身的是一個(gè)request方法,整個(gè)庫(kù)最核心的也就是這個(gè)request方法。

2.請(qǐng)求

Axios的原型上存在很多輔助方法,如get,post,put等等,這些方法最終都會(huì)調(diào)用request方法,且默認(rèn)設(shè)置了請(qǐng)求參數(shù)中的method屬性,僅僅是一種封裝的快捷調(diào)用方式。所以直接使用axios方法(axios的本質(zhì)是一個(gè)方法),傳入一個(gè)合法參數(shù)和使用axios.get等方法進(jìn)行請(qǐng)求沒(méi)有區(qū)別。

二、Axios類

1.基礎(chǔ)屬性

axios類型的對(duì)象,存在2個(gè)基礎(chǔ)屬性

  • defaults:默認(rèn)的請(qǐng)求參數(shù)
  • interceptors:請(qǐng)求和響應(yīng)的攔截器

2.輔助方法

axios類型的對(duì)象存在很多輔助方法,如下:

  • delete
  • get
  • head
  • options
  • post
  • put
  • patch
  • postForm
  • patchForm
  • putForm

這些方法本質(zhì)上都是request的封裝,調(diào)用這些方法時(shí),都會(huì)調(diào)用request方法,但相應(yīng)的會(huì)預(yù)設(shè)置部分請(qǐng)求參數(shù),如method和headers

3.request方法

這個(gè)方法是整個(gè)庫(kù)的核心,它接收一個(gè)配置作為參數(shù)。內(nèi)部流程如下:

  • (1)參數(shù)合并

axios對(duì)象在創(chuàng)建時(shí),會(huì)傳入一個(gè)默認(rèn)請(qǐng)求配置對(duì)象,這個(gè)對(duì)象會(huì)和請(qǐng)求時(shí)傳入的請(qǐng)求配置對(duì)象進(jìn)行合并。

  • (2)處理headers

合并后的對(duì)象需要進(jìn)一步處理headers,一些headers配置只針對(duì)特定類型的請(qǐng)求,如get類型。

  • (3)運(yùn)行執(zhí)行隊(duì)列

這一步是整個(gè)request設(shè)計(jì)的較為精妙的地方。執(zhí)行隊(duì)列有2種執(zhí)行模式,同步模式和異步模式,默認(rèn)為異步模式。分別如下:

  • 異步模式

  • 同步模式

簡(jiǎn)單來(lái)說(shuō),就是request攔截器,request請(qǐng)求,response攔截器一起組成了一個(gè)執(zhí)行隊(duì)列。在異步模式下,隊(duì)列里面每一個(gè)執(zhí)行方法執(zhí)行完成之后,會(huì)繼續(xù)調(diào)用下一個(gè)執(zhí)行方法。同步模式下,request攔截器和request請(qǐng)求會(huì)按順序同步執(zhí)行,但response攔截器會(huì)在請(qǐng)求返回后異步執(zhí)行。

三、adpter適配器

Axios庫(kù)是跨平臺(tái)的,可以在node環(huán)境和web環(huán)境同時(shí)使用。因此內(nèi)部有個(gè)"適配器"的概念,adpter是一個(gè)方法,一個(gè)請(qǐng)求本質(zhì)上就是調(diào)用這個(gè)方法,方法必須返回一個(gè)Promise對(duì)象。請(qǐng)求配置中,甚至可以讓我們自己去實(shí)現(xiàn)自己的適配器。

// `adapter` 允許自定義處理請(qǐng)求,這使測(cè)試更加容易。 // 返回一個(gè) promise 并提供一個(gè)有效的響應(yīng) (參見(jiàn) lib/adapters/README.md)。

adapter: function (config) { /* ... */ },

如果提供了這么一個(gè)參數(shù),那么將不會(huì)采用默認(rèn)的適配器,一般供測(cè)試使用。

1.xhradpter

xhradpter適配器適用于web環(huán)境,利用XMLHttpRequest對(duì)象實(shí)現(xiàn)。本質(zhì)上就是在操作一個(gè)XMLHttpRequest對(duì)象。

2.httpadpter

httpadpter適配器適用于node環(huán)境,利用node原生的http模塊實(shí)現(xiàn)。

以上就是axios庫(kù)的核心代碼解析及總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于axios庫(kù)核心代碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue實(shí)現(xiàn)半自動(dòng)打字機(jī)特效

    Vue實(shí)現(xiàn)半自動(dòng)打字機(jī)特效

    本文主要介紹了Vue實(shí)現(xiàn)半自動(dòng)打字機(jī)特效,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • vue3.0路由自動(dòng)導(dǎo)入的方法實(shí)例

    vue3.0路由自動(dòng)導(dǎo)入的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于vue3.0路由自動(dòng)導(dǎo)入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • VUE?使用canvas繪制管線管廊示例詳解

    VUE?使用canvas繪制管線管廊示例詳解

    這篇文章主要為大家介紹了VUE?使用canvas繪制管線/管廊實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • vue關(guān)于下載文件常用的幾種方式

    vue關(guān)于下載文件常用的幾種方式

    這篇文章主要介紹了vue關(guān)于下載文件常用的幾種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue與原生app的對(duì)接交互的方法(混合開(kāi)發(fā))

    vue與原生app的對(duì)接交互的方法(混合開(kāi)發(fā))

    vue開(kāi)發(fā)h5項(xiàng)目特別是移動(dòng)端的項(xiàng)目,很多都是打包后掛載在原生APP上的,這篇文章主要介紹了vue與原生app的對(duì)接交互的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue的狀態(tài)更新方式(異步更新解決)

    vue的狀態(tài)更新方式(異步更新解決)

    這篇文章主要介紹了vue的狀態(tài)更新方式(異步更新解決),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue實(shí)現(xiàn)商品詳情頁(yè)的評(píng)價(jià)列表功能

    Vue實(shí)現(xiàn)商品詳情頁(yè)的評(píng)價(jià)列表功能

    這篇文章主要介紹了Vue實(shí)現(xiàn)商品詳情頁(yè)的評(píng)價(jià)列表功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Vue3使用el-form嵌套el-table進(jìn)行單條數(shù)據(jù)的表單校驗(yàn)功能

    Vue3使用el-form嵌套el-table進(jìn)行單條數(shù)據(jù)的表單校驗(yàn)功能

    在實(shí)際開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要處理表格中的表單數(shù)據(jù),比如在編輯表格中的某一行數(shù)據(jù)時(shí)進(jìn)行校驗(yàn),本文給大家介紹了Vue3使用el-form嵌套el-table進(jìn)行單條數(shù)據(jù)的表單校驗(yàn)功能,文中有相關(guān)的代碼供大家參考,需要的朋友可以參考下
    2024-08-08
  • 在vue項(xiàng)目中使用Nprogress.js進(jìn)度條的方法

    在vue項(xiàng)目中使用Nprogress.js進(jìn)度條的方法

    NProgress.js是輕量級(jí)的進(jìn)度條組件,使用簡(jiǎn)便,可以很方便集成到單頁(yè)面應(yīng)用中。這篇文章主要介紹了在vue項(xiàng)目中使用Nprogress.js進(jìn)度條的方法,需要的朋友可以參考下
    2018-01-01
  • vue中elementUI里面一些插件的使用

    vue中elementUI里面一些插件的使用

    Element UI是一套基于Vue的桌面端組件庫(kù),封裝好了很多常用的UI組件,下面這篇文章主要給大家介紹了關(guān)于vue中elementUI里面一些插件的使用方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06

最新評(píng)論

北海市| 保山市| 合水县| 镇康县| 沙坪坝区| 丰台区| 镇坪县| 射阳县| 胶南市| 夏津县| 永福县| 施甸县| 西峡县| 林甸县| 清原| 葵青区| 东城区| 定结县| 琼海市| 蒙城县| 彰武县| 遂宁市| 洞头县| 新干县| 永和县| 武鸣县| 石楼县| 卢氏县| 韶关市| 长武县| 资溪县| 石河子市| 平江县| 宁南县| 周至县| 阿克陶县| 蒙城县| 若尔盖县| 格尔木市| 鹰潭市| 拉萨市|