Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 11130|Vastaus: 2

[JavaScript] Ajaxin ja Axiosin sekä Fetchin ero

[Kopioi linkki]
Julkaistu 16.5.2019 13.28.28 | | | |
1.jQuery ajax

Perinteinen Ajax viittaa XMLHttpRequest(XHR):iin, varhaisimpaan taustajärjestelmän pyyntöteknologiaan, joka esiintyi alkuperäisessä js:ssä, ja ydin käyttää XMLHttpRequest-objektia.

JQuery ajax on natiivin XHR:n kapselointi ja lisää tukea JSONP:lle. Vuosien päivitysten ja ylläpidon jälkeen se on todella kätevä, eikä etuja tarvitse sanoa; Jos haluat luetella muutamia puutteita, se voi olla vain seuraavaa:

1. Se on ohjelmointia MVC:lle, joka ei vastaa nykyistä front-end MVVM:n aaltoa
2. Alkuperäisen XHR-kehityksen perusteella XHR:n arkkitehtuuri itsessään ei ole selvä.
3. Koko JQuery-projekti on liian suuri, ja on hyvin kohtuutonta esitellä koko JQuery pelkästään ajaxilla (ottamalla käyttöön personoitu pakkausratkaisu ilman CDN-palveluita)
4. Se ei noudata osapuolten erottelun periaatetta
5. Konfiguraatio ja kutsuminen ovat hyvin sekavia, ja tapahtumapohjainen asynkroninen malli ei ole ystävällinen.

PS:MVVM(Model-View-ViewModel), 源自于经典的 Model–View–Controller(MVC)模式。MVVM 的出现促进了 GUI 前端开发与后端业务逻辑的分离,极大地提高了前端开发效率。MVVM 的核心是 ViewModel 层,它就像是一个中转站(value converter),负责转换 Model 中的数据对象来让数据变得更容易管理和使用,该层向上与视图层进行双向数据绑定,向下与 Model 层通过接口请求进行数据交互,起呈上启下作用。View 层展现的不是 Model 层的数据,而是 ViewModel 的数据,由 ViewModel 负责与 Model 层交互,这就完全解耦了 View 层和 Model 层,这个解耦是至关重要的,它是前后端分离方案实施的最重要一环。

Kuten seuraavassa kuvassa näkyy:




2.aksios

Vue2.0:n jälkeen You Yuxi suositteli, että korvaisit JQuery Ajaxin Axiosilla, mikä varmasti sai Axiosin monien ihmisten silmissä.

axios on HTTP-asiakasohjelma, joka perustuu Promises-ohjelmaan selaimille ja nodeJS:lle, eli käytännössä natiivin XHR:n kapselointi, paitsi että se on promises-sovellusten toteutus, joka täyttää uusimpia ES-määrittelyjä, ja sillä on seuraavat ominaisuudet:

1. Luo XMLHttpRequest selaimestasi
2. Support Promise API
3. Asiakastuki estää CSRF:n
4. Tarjoa joitakin rajapintoja samanaikaisille pyynnöille (tärkeä, paljon kätevämpi käyttö)
5. Luo HTTP-pyyntö node.js
6. Sieppauspyynnöt ja vastaukset
7. Muunna pyyntö- ja vastaustiedot
8. Pyynnön peruuttaminen
9. Muunna JSON-data automaattisesti

PS:防止CSRF:就是让你的每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,这样,后台就可以轻松辨别出这个请求是否是用户在假冒网站上的误导输入,从而采取正确的策略。

3.hae


Fetch mainostetaan vaihtoehtona AJAXille, joka esiintyi ES6:ssa ja käyttää lupausobjektia ES6:ssa. Fetch on suunniteltu lupausten pohjalta. Fetchin koodirakenne on paljon yksinkertaisempi kuin ajaxin, ja parametrit ovat vähän kuin jQuery ajax. Muista kuitenkinFetch ei ole ajaxin lisäkapselointi, vaan natiivi JS eikä käytä XMLHttpRequest-objektia

Noudon edut:

1. Noudata tarkennuserottelua, äläkä sekoita tapahtumien seuraamia syötteitä, lähtöjä ja tiloja yhdessä objektissa
2. Parempi ja kätevämpi tapa kirjoittaa
Rehellisesti sanottuna edellä mainitut syyt eivät ole minulle lainkaan vakuuttavia, koska sekä Jquery että Axios ovat auttaneet meitä kapseloimaan xhr:n tarpeeksi hyvin ja ovat tarpeeksi helppokäyttöisiä, miksi meidän täytyy silti käyttää paljon vaivaa noutotekniikan oppimiseen?

Mielestäni noudon tärkeimmät edut ovat:


1. Syntaksi on tiivis ja semanttisempi
2. Perustuen standardin lupauksen toteutukseen, tue asynkronisoitua/odota
3. Isomorfinen mukavuus, käyttäen [isomorfista hakemista](https://github.com/matthew-andrews/isomorphic-fetch)
4. Enemmän pohjatasoa, monipuolisia API-rajapintoja (pyyntö, vastaus)
5. Irtautuminen XHR:stä on uusi toteutus ES-määrittelyssä
Viime aikoina, kun käytän noutoa, olen myös kohdannut paljon ongelmia:
Fetch on matalan tason API, jota voi ajatella natiivina XHR:nä, joten se ei ole kovin mukava käyttää ja se täytyy kapseloida.
Esimerkiksi:


1) Fetch raportoi virheitä vain verkkopyynnöistä ja käsittelee 400 ja 500 onnistuneina pyyntöinä, eikä palvelin hylkää 400- tai 500-virhekoodeja.
2) Fetch ei kanna evästeitä oletuksena, sinun täytyy lisätä konfiguraatiokohde: fetch(url, {credentials: 'include'})
3) fetch ei tue keskeytystä, ei tue aikakatkaisun hallintaa, ja setTimeoutin ja Promise.reject toteuttama aikakatkaisukontrolli ei voi estää pyyntöprosessin jatkumista taustalla, mikä johtaa liikenteen hukkaan menehtymiseen
4) Fetchillä ei ole mahdollisuutta valvoa pyyntöjen etenemistä natiivisti, kun taas XHR:llä on mahdollisuus
Yhteenveto: Axios tarjoaa samanaikaisen kapseloinnin ilman nouto-ongelmia, ja on pienikokoinen, mikä tekee siitä nykyään sopivimman pyyntömenetelmän.




Edellinen:Pure CSS3 kaunistaa radiopainikkeita
Seuraava:BIO:n ja NIO:n ymmärtäminen
Julkaistu 17.5.2019 18.16.39 |
Oppinut,
 Vuokraisäntä| Julkaistu 20.2.2025 10.08.01 |
Natiivi XMLHttpRequest-pyyntö

SAADA






POSTI



Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com