国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

中了源碼的毒,給你一副良藥

開發 前端
Axios 是一個基于 Promise 的 HTTP 客戶端,同時支持瀏覽器和 Node.js 環境。它是一個優秀的 HTTP 客戶端,被廣泛地應用在大量的 Web 項目中。

[[348328]]

本文轉載自微信公眾號「全棧修仙之路」,作者阿寶哥 。轉載本文請聯系全棧修仙之路公眾號。  

一、靈魂四連問

1.1 為什么要讀源代碼

 

1.2 如何選擇項目

 

1.3 如何閱讀源碼

 

1.4 有實際的案例么

二、如何品讀 Axios?

2.1 走進 Axios

Axios 是一個基于 Promise 的 HTTP 客戶端,同時支持瀏覽器和 Node.js 環境。它是一個優秀的 HTTP 客戶端,被廣泛地應用在大量的 Web 項目中。

 

由上圖可知,Axios 項目的 Star 數為 「78.1K」,Fork 數也高達 「7.3K」,是一個很優秀的開源項目,所以值得大家細細品讀。

2.2 發現 Axios 的美

在確認 Axios 為 “追求目標” 之后,下一步我們就需要來發現它身上的優點(特性):

 

每個人對 “美” 都有不同的看法,對于阿寶哥來說,我看中了圖中已選中的三點。因此,它們也很光榮地成為讀源碼的三個切入點。當然切入點也不是越多越好,可以先找自己最感興趣的地方作為切入點。需要注意的是,如果切入點之間有關聯關系的話,建議做個簡單的排序。

2.3 感受 Axios 的美

選擇切入點之后,我們就可以開始逐一感受 Axios 的設計之美。以 「能夠攔截請求與響應」 這個切入點為例,首先我們就會接觸到 「攔截器」 的概念。所以我們需要先了解攔截器是什么、攔截器有什么作用以及如何使用攔截器,這里我們可以從項目的 「官方文檔」或者項目中的 「README.md」 文檔入手。

2.3.1 攔截器的作用

Axios 提供了請求攔截器和響應攔截器來分別處理請求和響應,它們的作用如下:

  • 請求攔截器:該類攔截器的作用是在請求發送前統一執行某些操作,比如在請求頭中添加 token 字段。
  • 響應攔截器:該類攔截器的作用是在接收到服務器響應后統一執行某些操作,比如發現響應狀態碼為 401 時,自動跳轉到登錄頁。

2.3.2 攔截器的使用

  1. // 添加請求攔截器 —— 處理請求配置對象 
  2. axios.interceptors.request.use(function (config) { 
  3.   config.headers.token = 'added by interceptor'
  4.   return config; 
  5. }); 
  6.  
  7. // 添加響應攔截器 —— 處理響應對象 
  8. axios.interceptors.response.use(function (data) { 
  9.   data.data = data.data + ' - modified by interceptor'
  10.   return data; 
  11. }); 
  12.  
  13. axios({ 
  14.   url: '/hello'
  15.   method: 'get'
  16. }).then(res =>{ 
  17.   console.log('axios res.data: ', res.data) 
  18. }); 

在了解完攔截器的作用和用法之后,我們就會把焦點聚焦到 「axios」 對象,因為注冊攔截器和發送請求都與它有緊密的聯系。不過在看具體源碼之前,阿寶哥建議先對功能點做一下梳理。以下是阿寶哥的分析思路:

Axios 的作用是用于發送 HTTP 請求,請求攔截器和響應攔截器分別對應于 HTTP 請求的不同階段,它們的本質是一個實現特定功能的函數。這時我們就可以按照功能把發送 HTTP 請求拆解成不同類型的子任務,比如有 「用于處理請求配置對象的子任務」,「用于發送 HTTP 請求的子任務」 和 「用于處理響應對象的子任務」。當我們按照指定的順序來執行這些子任務時,就可以完成一次完整的 HTTP 請求。

既然已經提到了任務,我們就會聯想到任務管理系統的基本功能:任務注冊、任務編排(優先級排序)和任務調度等。因此我們就可以考慮從 「任務注冊、任務編排和任務調度」 三個方面來分析 Axios 攔截器的實現。

2.3.3 任務注冊

  1. // 添加請求攔截器 —— 處理請求配置對象 
  2. axios.interceptors.request.use(function (config) { 
  3.   config.headers.token = 'added by interceptor'
  4.   return config; 
  5. }); 
  6.  
  7. // 添加響應攔截器 —— 處理響應對象 
  8. axios.interceptors.response.use(function (data) { 
  9.   data.data = data.data + ' - modified by interceptor'
  10.   return data; 
  11. }); 

在 lib/axios.js 路徑下,我們可以找到 「axios」 對象的定義。為了能直觀地了解對象之間的關系,阿寶哥建議大家在讀源碼的過程中,多動手畫畫圖。比如阿寶哥使用下圖來總結一下 Axios 對象與 InterceptorManager 對象的內部結構與關系:

 

2.3.4 任務編排

現在我們已經知道如何注冊攔截器任務,但僅僅注冊任務是不夠,我們還需要對已注冊的任務進行編排,這樣才能確保任務的執行順序。

同樣對于任務編排,也可以使用圖的形式來展現任務編排后的結果。「這里有一個小技巧,就是可以采用對比的形式來展示任務編排后的結果,這樣子會更加清楚任務編排的處理邏輯。」

 

2.3.5 任務調度

任務編排完成后,要發起 HTTP 請求,我們還需要按編排后的順序執行任務調度。

需要注意的是:在閱讀源碼過程中,不要太在意細節。比如在研究 Axios 攔截器原理時,不需要再深入了解 「dispatchRequest」 背后的具體實現,只需知道該方法用于實現發送 HTTP 請求即可,這樣才不會把整個線路拉得太長。

在分析完特定的功能點之后,也許你已經讀懂的具體的源代碼。但阿寶哥覺得這并不是最重要的,「更重要的是思考它的設計思想,這樣設計有什么好處,對于我們有沒有什么值得借鑒和學習的地方」。比如參考 Axios 攔截器的設計模型,我們就可以抽出以下通用的任務處理模型:

 

上面阿寶哥以 Axios 的攔截器為例,分享了讀 Axios 源碼的思路與技巧。接下來阿寶哥來分享一些讀源碼的建議和輔助工具。

三、讀源碼的建議

 

四、讀源碼輔助工具

如果你對下列輔助工具感興趣的話,可以通過以下圖片來源的鏈接,來直接打開每個工具的在線地址。

 

(圖片來源:https://www.processon.com/view/link/5f6d2beff346fb166d0ac4fd)

五、總結

其實除了上面的內容之外,讀優秀開源項目還有挺多值得關注的地方。阿寶哥在學習 BetterScroll 項目源碼時,總結了一張思維導圖:

 

(圖片來源:https://www.processon.com/view/link/5f6d2beff346fb166d0ac4fd)

下面阿寶哥用一張圖來總結一下 axios 和 better-scroll 這兩個開源項目的學習路線:

1、Axios 項目的切入點是從 Github 中的功能特性中篩選出來的;

2、BetterScroll 的切入點是從掘金上 “BetterScroll 2.0 發布:精益求精,與你同行” 這篇文章中介紹的功能亮點中找到的。

除此之外,阿寶哥也來簡單總結一下本文介紹的讀源碼的思路與技巧:

  • 站在巨人的肩膀,提前閱讀一些項目相關的優質文章;
  • 匯總學習或工作中遇到的問題,帶著問題進行源碼學習;
  • 明確閱讀源碼的主線或切入點;
  • 盡可能從簡單的示例出發來分析每個功能點;
  • 先梳理清楚主要流程,不要太在意細節,避免把整個線路拉得太長;
  • 在閱讀源碼過程中,要多多畫圖,這樣理解起來會更加直觀。

 

本文阿寶哥分享了個人讀源碼的思路、技巧與工具,希望閱讀完本文能對你有所啟發或幫助。如果你有讀源碼更好的思路與技巧,歡迎隨時跟阿寶哥交流。有寫得不好的地方,也請各位見諒哈。

 

責任編輯:武曉燕 來源: 全棧修仙之路
相關推薦

2018-11-22 20:50:12

區塊鏈區塊鏈技術比特幣

2013-09-17 13:52:00

工程師產品產品文案

2020-11-27 18:02:30

思科后疫情時代數字化

2020-12-08 13:55:04

易路人力資源

2015-11-27 15:05:58

WiFiWiFi技術

2020-03-06 08:00:06

Zookeeper分布式系統

2013-03-19 10:25:40

阿里云RDS

2011-04-11 16:27:59

喬布斯

2020-03-12 15:35:08

新基建5G網絡

2021-10-15 14:19:13

人工智能AI深度學習

2020-03-16 11:18:24

技術周刊

2019-12-10 16:27:33

網絡安全網絡安全大賽

2025-11-19 01:44:00

2021-09-22 08:37:02

pod源碼分析kubernetes

2024-02-06 14:51:00

AI訓練

2018-01-20 16:58:52

2025-07-09 00:00:00

2020-09-06 22:59:35

Linux文件命令

2016-09-12 15:15:49

戴爾

2020-02-21 14:35:57

JavaScript繼承前端
點贊
收藏

51CTO技術棧公眾號

国产视频二区在线观看| 国产日韩欧美在线播放不卡| 91麻豆精品国产91久久久资源速度| 在线观看免费视频高清游戏推荐| 青草国产精品久久久久久| 亚洲va久久久噜噜噜久久天堂| 国产伦精品一区二区三区视频| 美女撒尿一区二区三区| 日韩毛片一区| 亚洲一区二区国产| 免费看男女www网站入口在线| 4438x成人网最大色成网站| 二区在线视频| 91精品国产乱| wwww亚洲| 在线播放日韩av| 偷拍自拍亚洲| 欧美国产视频一区二区| 欧美视频二区欧美影视| 欧美精品www| 亚洲免费福利一区| 国产精品视频午夜| 亚洲草久电影| 欧美12av| 国产精品99久久久久久久vr| 日本www在线视频| 国产欧美精品一区二区色综合 | 午夜精品亚洲一区二区三区嫩草 | 国产探花在线观看| 日韩成人小视频| 桃子视频成人app| 久久av.com| 国产免费播放一区二区| 亚洲一区二区三区sesese| 尤物在线精品| 黄色一级片网址| 久久五月婷婷丁香社区| 日韩欧美国产精品一区二区三区| 精品高清美女精品国产区| 黄黄的网站在线观看| 亚洲区免费影片| 老牛精品亚洲成av人片| 国产精品高清一区二区三区| 狠狠色狠狠色综合系列| 9l视频白拍9色9l视频| 精品国产乱码久久久久久天美| av香蕉成人| 欧美精品在线网站| 亚洲精品小说| 成人免费看片视频在线观看| 国产精品天干天干在观线| 九色视频在线观看免费播放| 日韩电影免费观看中文字幕| 大型av综合网站| 久久99欧美| 久久久天堂av| 成人性生交大片免费看午夜 | 思思99re6国产在线播放| 亚洲欧美日韩精品久久亚洲区 | 天堂中文在线视频| 精品亚洲国产视频| 国产伦精品一区二区三区千人斩| 欧美成人免费在线| 国产拍欧美日韩视频二区 | 欧美日韩中文字幕一区二区| 成人看片网站| 国产国语videosex另类| 青青青爽久久午夜综合久久午夜| 日韩av在线中文| 精品粉嫩超白一线天av| 你懂的一区二区三区| 欧美日韩亚洲国产成人| 亚洲国产精品一区二区久久| 欧美激情网站| 成人黄色片在线| 国产成人精品一区二区三区四区 | 国产区一区二区| 久久嫩草精品久久久精品一| 国产免费视频在线| 久久艹在线视频| 国产精品亚洲综合久久| 国产福利电影| 国产一区二区日韩精品欧美精品| 亚洲情侣在线| 欧美一级裸体视频| 亚洲国产女人aaa毛片在线| 日韩中文欧美| 国产又大又黄又猛| 亚洲欧美日韩一区二区在线 | 国产亚洲短视频| 永久免费网站在线| 国产精品无av码在线观看| av在线不卡网| 91在线中文| 91在线观看欧美日韩| 国产欧美视频在线观看| 老司机深夜福利在线观看| 亚洲最大成人网色| 亚洲人成人一区二区在线观看| 国产亚洲一区二区手机在线观看| 国产日韩欧美精品| 午夜精品久久久久久久99水蜜桃| 91成人精品观看| 欧美日韩一区二区三区电影| 欧美三级资源在线| 国产精品最新| 天天爱天天做色综合| 久久久精品中文字幕| 久热成人在线视频| 巨大荫蒂视频欧美另类大| 国产精品影院在线观看| 国产精品久久久一本精品| 欧美极品在线| 激情小视频网站| 亚洲欧美在线一区二区| 免费成人av在线| 天使と恶魔の榨精在线播放| 国产亚洲精品自在久久| 欧美性大战久久| 亚洲天堂一区二区三区四区| 大地资源高清播放在线观看| 91成人国产在线观看| 国产三级精品视频| 激情亚洲小说| 国内自拍在线观看| 毛片精品免费在线观看| 国产香蕉久久精品综合网| 91精品视频一区二区| 免费国产a级片| 久久av中文字幕| 国产午夜一区二区三区| 97久久综合精品久久久综合| 午夜视频在线瓜伦| 午夜精品一区二区三区在线 | 亚洲国产欧美一区二区三区久久| 国产精品入口| 里番在线播放| 一区二区三区四区视频在线观看 | av2020不卡| 在线视频欧美一区| 亚洲欧美综合区自拍另类| 国产高清精品网站| 四虎视频在线精品免费网址| 国产成人无码一二三区视频| 美女久久久久久久| 亚洲免费观看高清完整版在线| 国产欧美三级电影| 国产igao激情在线入口| 国产精品一区久久久| 在线观看亚洲专区| 国产日韩精品视频一区二区三区| 成人午夜在线影视| 日韩成人三级视频| 久久精品视频导航| 亚洲精品国产精华液| 婷婷亚洲图片| 97超碰资源站在线观看| 亚洲三区在线| 欧美大片va欧美在线播放| 亚洲一区二区视频在线| 一区久久精品| av中文资源在线资源免费观看| 日本一二三区视频在线| 国内精品小视频| 欧美日韩美女在线观看| 乱码第一页成人| 中文.日本.精品| 中文乱码字幕高清在线观看| 国产精品v欧美精品v日韩精品| 精品日韩99亚洲| 国产999精品久久| 蜜桃一区二区| 欧美人与性动交α欧美精品图片| 日韩精品视频在线观看视频| 97精品在线观看| 欧美三区在线观看| 91亚洲精品乱码久久久久久蜜桃 | 成人免费xx| 国产伦精品一区二区三区免| 国产婷婷色综合av蜜臀av| 国产精品久久久久久久蜜臀| 91精品亚洲| 高清av不卡| 992tv在线影院| 四虎影院一区二区| 国产精品久久久久久久久久新婚| 精品欧美一区二区三区精品久久| 91色九色蝌蚪| 激情亚洲成人| 国产精品中文| h视频在线免费观看| 又色又爽又高潮免费视频国产| 91免费福利视频| 亚洲天堂男人的天堂| 日韩欧美在线观看| 91蜜桃免费观看视频| 中文在线不卡| 欧美亚洲大陆| 成人私拍视频| 99re在线视频|