axios 內部原理學習記錄


前提:一次面試被問到了,axios有什么特點,對比一下ajax。答的很不滿意。

axios是一個基於Promise的http請求庫,可用於瀏覽器和 Node。可以說是目前最為常用的http庫,有必要了解一下其內部的實現原理。

同時支持瀏覽器端和服務端的請求。由於axios的這一特性,vue的服務端渲染對於axios簡直毫無抵抗力。 這很牛x啊!

下面選部分重要代碼分析。

function getDefaultAdapter() {
 var adapter;
 if (typeof XMLHttpRequest !== ‘undefined‘) {
   //通過判斷XMLHttpRequest是否存在,來判斷是否是瀏覽器環境
   adapter = require(‘./adapters/xhr‘);
 } else if (typeof process !== ‘undefined‘) {
   //通過判斷process是否存在,來判斷是否是node環境
   adapter = require(‘./adapters/http‘);
 }
 return adapter;
}

 到這里真相大白,這里通過  XMLHttpRequest  和  process 來判斷是瀏覽器環境還是node環境(學習了!),  從而在不同的環境提供不同的http請求模塊,實現客戶端和服務端程序的兼容。

 同理,我們在做ssr服務端渲染時,也可以使用這個方法來判斷代碼當前的執行環境。

 知識點:

   XMLHttpRequest  是瀏覽器內置的一個對象,它為客戶端提供了在客戶端和服務器之間傳輸數據的功能。

   process 對象是node內置的一個全局變量,提供有關信息,控制當前 Node.js 進程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM