欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ajax與Axios的基礎(chǔ)知識(shí)以及詳細(xì)對(duì)比總結(jié)

 更新時(shí)間:2024年09月09日 09:01:40   作者:nkion  
在Web開(kāi)發(fā)中Ajax和Axios是兩種實(shí)現(xiàn)異步數(shù)據(jù)請(qǐng)求的技術(shù),Ajax可以在不刷新頁(yè)面的情況下與服務(wù)器通信,Axios是一個(gè)基于Promise的HTTP客戶端,簡(jiǎn)化了HTTP請(qǐng)求的過(guò)程,兩者都能處理多種數(shù)據(jù)格式,這篇文章主要介紹了Ajax與Axios的基礎(chǔ)知識(shí)以及詳細(xì)對(duì)比總結(jié),需要的朋友可以參考下

一、引言

在現(xiàn)代Web開(kāi)發(fā)中,前端與后端的數(shù)據(jù)交互是至關(guān)重要的一環(huán)。隨著前端技術(shù)的發(fā)展,越來(lái)越多的開(kāi)發(fā)者需要在不刷新整個(gè)頁(yè)面的情況下與服務(wù)器進(jìn)行數(shù)據(jù)交換。這種技術(shù)被稱為“異步數(shù)據(jù)請(qǐng)求”,而Ajax和Axios是實(shí)現(xiàn)這一功能的兩種常見(jiàn)方式。本文將深入淺出地介紹Ajax與Axios的基礎(chǔ)知識(shí),并對(duì)它們進(jìn)行詳細(xì)對(duì)比。

二、什么是Ajax?

2.1 Ajax的定義

Ajax是“異步JavaScript與XML”(Asynchronous JavaScript and XML)的縮寫(xiě)。盡管名稱中包含了XML,但Ajax并不局限于使用XML進(jìn)行數(shù)據(jù)交換,它還可以處理JSON、HTML、純文本等多種格式。Ajax的核心思想是允許網(wǎng)頁(yè)在不重新加載整個(gè)頁(yè)面的情況下,從服務(wù)器請(qǐng)求數(shù)據(jù)或發(fā)送數(shù)據(jù)到服務(wù)器。

圖片來(lái)自網(wǎng)絡(luò)

2.2 Ajax的工作原理

Ajax的工作原理可以通過(guò)以下幾個(gè)步驟來(lái)理解:

  • 用戶操作:用戶在網(wǎng)頁(yè)上執(zhí)行某個(gè)操作(如點(diǎn)擊按鈕)。
  • JavaScript觸發(fā):JavaScript監(jiān)聽(tīng)到用戶的操作,并通過(guò)XMLHttpRequest對(duì)象向服務(wù)器發(fā)送請(qǐng)求。
  • 服務(wù)器處理請(qǐng)求:服務(wù)器接收到請(qǐng)求后進(jìn)行處理,并將數(shù)據(jù)返回給客戶端。
  • JavaScript處理響應(yīng):客戶端的JavaScript接收到服務(wù)器的響應(yīng),并根據(jù)響應(yīng)內(nèi)容更新網(wǎng)頁(yè)的部分內(nèi)容。
代碼示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script>
    function ajax1(){
        
        let sno = document.querySelector(".sno").value;
        //1.創(chuàng)建ajax對(duì)象
        let xmlHttpRequest = new XMLHttpRequest();
        //2.設(shè)置請(qǐng)求方式和請(qǐng)求地址
        xmlHttpRequest.open("GET","/Servlet_war_exploded/ajax3?sno="+sno,true);
        //3.監(jiān)聽(tīng)數(shù)據(jù)是否變化
        xmlHttpRequest.onreadystatechange=function (){
            if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200){
                //4.獲取數(shù)據(jù)
                let data =JSON.parse(xmlHttpRequest.responseText);
                //5.將數(shù)據(jù)顯示在頁(yè)面上
                // document.querySelector("#id").innerHTML=data.sno;
                document.querySelector(".name").innerHTML=data.sname;
                document.querySelector(".sex").innerHTML=data.ssex;
                document.querySelector(".class").innerHTML=data.sclass;

            }
        }
        //4.發(fā)送請(qǐng)求
        xmlHttpRequest.send();
    }
</script>
<body>
<h1>aja</h1>
<div id="show">
    id:<input type="text" class="sno" placeholder="id"><br>
    姓名:<span class="name"></span><br>
    姓別:<span class="sex"></span><br>
    班級(jí):<span class="class"></span><br>
</div>
<button onclick="ajax1()">提交
</button>
</body>
</html>

2.4 Ajax的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 提高用戶體驗(yàn):通過(guò)部分頁(yè)面刷新,用戶可以在不離開(kāi)當(dāng)前頁(yè)面的情況下獲取最新數(shù)據(jù),提升交互體驗(yàn)。
  • 減少服務(wù)器負(fù)載:只更新頁(yè)面的一部分內(nèi)容,減少了服務(wù)器和網(wǎng)絡(luò)的負(fù)擔(dān)。
  • 兼容性好:Ajax可以在絕大多數(shù)現(xiàn)代瀏覽器中運(yùn)行,無(wú)需依賴額外的庫(kù)。

缺點(diǎn)

  • 代碼復(fù)雜:直接使用XMLHttpRequest對(duì)象進(jìn)行異步請(qǐng)求,代碼較為冗長(zhǎng),容易出錯(cuò)。
  • 難以管理:如果異步請(qǐng)求過(guò)多,可能導(dǎo)致回調(diào)地獄,難以維護(hù)。

三、什么是Axios?

3.1 Axios的定義

Axios是一個(gè)基于Promise的HTTP客戶端,主要用于在瀏覽器和Node.js環(huán)境中發(fā)送異步請(qǐng)求。Axios簡(jiǎn)化了HTTP請(qǐng)求的過(guò)程,并且提供了更多便捷的功能,例如請(qǐng)求攔截、響應(yīng)攔截、錯(cuò)誤處理等。與原生的XMLHttpRequest對(duì)象相比,Axios的語(yǔ)法更加簡(jiǎn)潔,使用更加方便。其實(shí)Axios就是對(duì)Ajax的封裝。

官網(wǎng): Axios中文文檔 | Axios中文網(wǎng)

3.2 Axios的安裝與使用

在使用Axios之前,我們需要先安裝它。如果你使用的是前端構(gòu)建工具(如Webpack、Parcel等),可以通過(guò)npm或yarn安裝Axios:

npm install axios

或者:

yarn add axios

或者也可以直接導(dǎo)入axios.js文件到項(xiàng)目中。

安裝完成后,你可以在JavaScript文件中導(dǎo)入并使用它

import axios from 'axios';

axios.get('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => {
        console.log(response.data);
    })
    .catch(error => {
        console.error('Error fetching data:', error);
    });

在這個(gè)例子中,Axios通過(guò)axios.get()方法發(fā)送了一個(gè)GET請(qǐng)求,并返回了一個(gè)Promise對(duì)象。我們可以通過(guò)then方法處理成功的響應(yīng),通過(guò)catch方法處理錯(cuò)誤。

3.3 Axios的功能特點(diǎn)

Axios除了基本的GET和POST請(qǐng)求外,還提供了其他的功能,可以更方便地處理HTTP請(qǐng)求。

  • 支持Promise:Axios基于Promise封裝,支持鏈?zhǔn)秸{(diào)用和異步操作。
  • 請(qǐng)求和響應(yīng)攔截器:你可以在請(qǐng)求或響應(yīng)被處理前,進(jìn)行預(yù)處理或修改。
  • 自動(dòng)轉(zhuǎn)換JSON數(shù)據(jù):如果響應(yīng)的數(shù)據(jù)是JSON格式,Axios會(huì)自動(dòng)將其轉(zhuǎn)換為JavaScript對(duì)象。
  • 客戶端支持取消請(qǐng)求:如果一個(gè)請(qǐng)求發(fā)出后不再需要,你可以輕松地取消它。

3.4 使用Axios的示例

下面是一個(gè)使用Axios發(fā)送POST請(qǐng)求的示例:

axios.post('https://jsonplaceholder.typicode.com/posts', {
    title: 'foo',
    body: 'bar',
    userId: 1
})
.then(response => {
    console.log(response.data);
})
.catch(error => {
    console.error('Error posting data:', error);
});

在這個(gè)示例中,我們通過(guò)axios.post()方法發(fā)送了一個(gè)POST請(qǐng)求,將數(shù)據(jù)傳遞給服務(wù)器,并處理了響應(yīng)結(jié)果。

3.5 Axios的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 語(yǔ)法簡(jiǎn)潔:相比XMLHttpRequest,Axios的語(yǔ)法更加簡(jiǎn)潔直觀,代碼可讀性更高。
  • 功能豐富:Axios內(nèi)置了許多實(shí)用功能,如攔截器、錯(cuò)誤處理、取消請(qǐng)求等,減少了開(kāi)發(fā)者手動(dòng)編寫(xiě)的代碼量。
  • 兼容性好:Axios可以在現(xiàn)代瀏覽器和Node.js中使用,且支持Promise語(yǔ)法。

缺點(diǎn)

  • 需要引入額外的庫(kù):與Ajax不同,使用Axios需要引入外部庫(kù),增加了項(xiàng)目的依賴。
  • 文件體積較大:Axios庫(kù)雖然不大,但相比直接使用Ajax會(huì)增加一些文件體積。

四、Ajax與Axios的對(duì)比

4.1 語(yǔ)法對(duì)比

首先,Ajax和Axios在語(yǔ)法上有明顯的差異。Ajax需要手動(dòng)創(chuàng)建XMLHttpRequest對(duì)象并設(shè)置各種參數(shù),而Axios則提供了更加簡(jiǎn)潔的API封裝。

Ajax:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1', true);
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        console.log(JSON.parse(xhr.responseText));
    }
};
xhr.send();

 Axios:

axios.get('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => {
        console.log(response.data);
    })
    .catch(error => {
        console.error('Error fetching data:', error);
    });

可以看出,Axios通過(guò)封裝,將HTTP請(qǐng)求的處理變得更加簡(jiǎn)潔直觀。

4.2 功能對(duì)比

  • 數(shù)據(jù)格式支持:Ajax和Axios都支持處理多種數(shù)據(jù)格式,但Axios會(huì)自動(dòng)處理JSON數(shù)據(jù)的轉(zhuǎn)換,而Ajax則需要手動(dòng)解析。
  • 跨域支持:Ajax默認(rèn)情況下不支持跨域請(qǐng)求,需要借助CORS(跨域資源共享)或JSONP(JSON with Padding)技術(shù)。而Axios通過(guò)配置請(qǐng)求頭可以方便地處理跨域請(qǐng)求。
  • 錯(cuò)誤處理:在Ajax中,錯(cuò)誤處理通常需要在onreadystatechange回調(diào)函數(shù)中進(jìn)行。而Axios基于Promise的結(jié)構(gòu),使得錯(cuò)誤處理更加直觀,支持鏈?zhǔn)秸{(diào)用。

4.3 兼容性對(duì)比

  • 瀏覽器支持:Ajax是JavaScript的原生功能,可以在幾乎所有的現(xiàn)代瀏覽器中運(yùn)行。而Axios作為第三方庫(kù),雖然也支持大部分瀏覽器,但在非常老舊的瀏覽器中可能需要Polyfill(補(bǔ)?。﹣?lái)支持Promise。
  • 環(huán)境支持:Ajax只能在瀏覽器環(huán)境中使用,而Axios不僅可以在瀏覽器中使用,還可以在Node.js等環(huán)境中運(yùn)行,具有更廣泛的適用性。

五、總結(jié)

Ajax與Axios作為前端開(kāi)發(fā)中常用的異步數(shù)據(jù)請(qǐng)求工具,各有優(yōu)劣。Ajax是JavaScript的原生方法,具有較好的兼容性和較少的依賴,但其使用起來(lái)相對(duì)繁瑣。Axios則是一個(gè)功能強(qiáng)大、易于使用的第三方庫(kù),提供了更加友好的API和豐富的功能,適合現(xiàn)代前端開(kāi)發(fā)需求。

到此這篇關(guān)于Ajax與Axios的基礎(chǔ)知識(shí)以及詳細(xì)對(duì)比總結(jié)的文章就介紹到這了,更多相關(guān)Ajax與Axios總結(jié)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 28個(gè)常用JavaScript方法集錦

    28個(gè)常用JavaScript方法集錦

    本文給大家匯總介紹了28個(gè)常用的javascript方法,十分的全面,都是本人精心整理的,這里推薦給大家,有需要的小伙伴直接帶走。
    2015-01-01
  • JS中圖片壓縮的方法小結(jié)

    JS中圖片壓縮的方法小結(jié)

    這篇文章主要介紹了JS中圖片壓縮的方法,包括等比壓縮圖片的方法,需要的朋友可以參考下
    2017-11-11
  • JavaScript實(shí)現(xiàn)的貝塞爾曲線算法簡(jiǎn)單示例

    JavaScript實(shí)現(xiàn)的貝塞爾曲線算法簡(jiǎn)單示例

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)的貝塞爾曲線算法,結(jié)合簡(jiǎn)單實(shí)例形式分析了基于javascript的貝塞爾曲線算法的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01
  • JS實(shí)現(xiàn)新浪博客左側(cè)的Blog管理菜單效果代碼

    JS實(shí)現(xiàn)新浪博客左側(cè)的Blog管理菜單效果代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)新浪博客左側(cè)的Blog管理菜單效果代碼,可實(shí)現(xiàn)基于鼠標(biāo)點(diǎn)擊事件動(dòng)態(tài)操作頁(yè)面元素樣式的功能,界面美觀大方,簡(jiǎn)潔實(shí)用,需要的朋友可以參考下
    2015-10-10
  • JavaScript 對(duì)Cookie 操作的封裝小結(jié)

    JavaScript 對(duì)Cookie 操作的封裝小結(jié)

    通過(guò)本篇,您能了解到: 匿名函數(shù) 閉包的產(chǎn)生 JavaScript實(shí)現(xiàn)private 以及 public 訪問(wèn)權(quán)限 document.cookie 的操作
    2009-12-12
  • js密碼強(qiáng)度檢測(cè)

    js密碼強(qiáng)度檢測(cè)

    這篇文章主要介紹了js密碼強(qiáng)度檢測(cè)的相關(guān)資料,并給出了詳細(xì)代碼,需要的朋友可以參考下
    2016-01-01
  • 基于JavaScript獲取鼠標(biāo)位置的各種方法

    基于JavaScript獲取鼠標(biāo)位置的各種方法

    這篇文章主要介紹了基于JavaScript獲取鼠標(biāo)位置的各種方法 ,需要的朋友可以參考下
    2015-12-12
  • js字符編碼函數(shù)區(qū)別分析

    js字符編碼函數(shù)區(qū)別分析

    js對(duì)文字編碼有3個(gè)函數(shù): escape,encodeURI,encodeURIComponent, 對(duì)應(yīng)的解碼函數(shù):unescape,decodeURI,decodeURIComponent
    2008-06-06
  • JavaScript交換變量常用4種方法解析

    JavaScript交換變量常用4種方法解析

    這篇文章主要介紹了JavaScript交換變量常用4種方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • vscode使用Prettier Code插件的詳細(xì)教程

    vscode使用Prettier Code插件的詳細(xì)教程

    這篇文章主要介紹了vscode使用Prettier Code插件的詳細(xì)教程,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論