Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 11130|Odpověď: 2

[JavaScript] Rozdíl mezi ajaxem a axiosem a fetchem

[Kopírovat odkaz]
Zveřejněno 16.05.2019 13:28:28 | | | |
1.jQuery ajax

Tradiční Ajax označuje XMLHttpRequest(XHR), nejstarší back-end request technologii, která se objevila v původním js, a jádro používá objekt XMLHttpRequest.

JQuery ajax je enkapsulací nativního XHR a přidává podporu pro JSONP. Po letech aktualizací a údržby je to opravdu velmi pohodlné a výhody nelze zmiňovat; Pokud trváte na tom, že uvedete pár nedostatků, může to být jen:

1. Je to programování pro MVC, které neodpovídá současné vlně front-end MVVM
2. Na základě nativního vývoje XHR není architektura XHR sama o sobě jasná.
3. Celý projekt JQuery je příliš rozsáhlý a je velmi nerozumné zavádět celý JQuery pouze pomocí Ajaxu (přijmout personalizované balení a nevyužívat služby CDN)
4. Neodpovídá principu oddělení zájmů
5. Konfigurace a volání jsou velmi matoucí a asynchronní model založený na událostech není přátelský.

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

Jak je znázorněno na následujícím obrázku:




2.axios

Po Vue2.0 You Yuxi doporučil nahradit JQuery ajax axios, což muselo způsobit, že axios se dostal do očí mnoha lidí.

axios je HTTP klient založený na slibech pro prohlížeče a nodejs, což je v podstatě zapouzdření nativního XHR, s tím rozdílem, že jde o implementaci slibů odpovídající nejnovějším specifikacím ES a sám má následující vlastnosti:

1. Vytvořte XMLHttpRequest ze svého prohlížeče
2. Podpora Promise API
3. Podpora klienta zabraňuje CSRF
4. Poskytnout některá rozhraní pro současné požadavky (důležité, mnohem pohodlnější operace)
5. Vytvořte HTTP požadavek z node.js
6. Požadavky a odpovědi na zachycení
7. Transformace dat o požadavcích a odpovědích
8. Zrušení žádosti
9. Automatický převod JSON dat

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

3. aportch


Fetch je prezentován jako alternativa k AJAXu, který se objevil v ES6 a používá objekt promise v ES6. Fetch je navržen na základě slibů. Struktura kódu ve Fetch je mnohem jednodušší než v ajaxu a parametry jsou trochu podobné jQuery ajax. Nicméně nezapomeňtefetch není další zapouzdřením ajaxu, ale nativní js a nepoužívá objekt XMLHttpRequest

Výhody aportu:

1. Dodržujte separaci fokusu a nemíchejte vstupy, výstupy a stavy sledované událostmi v jednom objektu
2. Lepší a pohodlnější způsob psaní
Upřímně, výše uvedené důvody mě vůbec nepřesvědčují, protože jak Jquery, tak Axios nám pomohly dostatečně dobře zachytit xhr a jsou dostatečně snadné na použití, proč bychom se měli stále tolik snažit naučit fetch?

Myslím, že hlavní výhody aportu jsou:


1. Syntaxe je stručná a více sémantická
2. Na základě standardní implementace Promise podpora async/await
3. Izomorfní pohodlí, pomocí [isomorfní-fetch](https://github.com/matthew-andrews/isomorphic-fetch)
4. Více na spodní úrovni, poskytující bohatá API (požadavek, odpověď)
5. Odklon od XHR je nová implementace ve specifikaci ES
V poslední době jsem při používání fetchu narazil také na spoustu problémů:
fetch je nízkoúrovňové API, které si můžete představit jako nativní XHR, takže není příliš pohodlné na používání a musí být zapouzdřeno.
Například:


1) fetch hlásí pouze chyby pro síťové požadavky a považuje 400 a 500 za úspěšné požadavky, a server neodmítne při vrácení chybových kódů 400 nebo 500.
2) fetch ve výchozím nastavení neobsahuje cookies, musíte přidat konfigurační položku: fetch(url, {credentials: 'include'})
3) fetch nepodporuje abort, nepodporuje řízení timeoutu a řízení timeoutu implementované setTimeout a Promise.reject nemůže zabránit pokračování procesu požadavku na pozadí, což vede k plýtvání provozem
4) fetch nemá možnost nativně sledovat průběh požadavků, zatímco XHR ano
Shrnutí: Axios poskytuje souběžnou enkapsulaci bez problémů s načítáním a je malý, což z něj činí nejvhodnější metodu požadavků v současnosti.




Předchozí:Pure CSS3 zkrášluje tlačítka rádia
Další:Porozumění BIO a NIO
Zveřejněno 17.05.2019 18:16:39 |
Učený,
 Pronajímatel| Zveřejněno 20.02.2025 10:08:01 |
Nativní požadavek XMLHttpRequest

DOSTAT






POST



Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com