AJAX

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 6 iulie 2021; verificările necesită 20 de modificări .
Ajax
Clasa de limba Aplicație web , HTML , JavaScript , DHTML , Document Object Model , XMLHttpRequest , JSON , XML , XSLT , XHTML , Foi de stil în cascadă
Aparut in 2005
Autor James Garrett
 Fișiere media la Wikimedia Commons

AJAX , Ajax ( ˈeɪdʒæks , din engleză  Asynchronous Javascript and XML  - „asynchronous JavaScript and XML ”) este o abordare a construirii interfețelor utilizator interactive pentru aplicații web , care constă în schimbul de date „în fundal” între browser și serverul web . Ca urmare, atunci când datele sunt actualizate, pagina web nu se reîncarcă complet, iar aplicațiile web devin mai rapide și mai convenabile. În rusă, uneori este pronunțat în transliterație ca „Ajax”. Abrevierea AJAX nu are un analog bine stabilit în chirilic.

Istorie

Termenul AJAX a fost folosit pentru prima dată public pe 18 februarie 2005 de Jesse James Garrett în articolul său „A New Approach to Web Applications” [1]  – așa a numit noul set de tehnologii pe care le-a oferit clientului. .

Cu toate acestea, într-o formă sau alta, multe tehnologii au fost disponibile și utilizate mult mai devreme, cum ar fi abordarea „Remote Scripting” propusă de Microsoft în 1998 sau folosind elementul HTML IFRAME, care a apărut în Internet Explorer 3 în 1996 .

AJAX a devenit deosebit de popular după ce a fost folosit de Google în serviciile Gmail , Google Maps și Google Suggest . .

Tehnologie

AJAX nu este o tehnologie independentă, ci conceptul de utilizare a mai multor tehnologii conexe. AJAX se bazează pe două principii principale:

Acțiunile de interfață sunt transformate în operațiuni cu elemente DOM ( Document Object Model ) ,  cu ajutorul cărora sunt prelucrate datele disponibile utilizatorului, în urma cărora prezentarea acestora se modifică. De asemenea, procesează mișcările mouse-ului și clicurile, precum și apăsările de taste. Foile de stil în cascadă sau CSS ( Foile de stil în cascadă ), oferă un aspect și o senzație consistentă elementelor aplicației și fac obiectele DOM mai ușor de accesat. Obiectul XMLHttpRequest (sau mecanisme similare) este folosit pentru a comunica asincron cu serverul, pentru a procesa cererile utilizatorilor și pentru a încărca datele necesare în timp ce rulează.  

Trei dintre aceste patru tehnologii - CSS, DOM și JavaScript  - formează DHTML ( HTML dinamic ) .  Potrivit unor autori [4] , instrumentele DHTML care au apărut în 1997 s-au arătat foarte promițătoare, dar nu s-au ridicat la înălțimea lor.

Formatul de transfer de date poate fi fragmente de text simplu, cod HTML , JSON sau XML .

Comparația abordării standard și AJAX

În modelul clasic de aplicație web:

  1. Utilizatorul intră într-o pagină web și face clic pe unele dintre elementele acesteia;
  2. Browserul formează și trimite o cerere către server ;
  3. Ca răspuns, serverul generează o pagină web complet nouă și o trimite browserului etc., după care browserul reîncarcă complet întreaga pagină.

Când utilizați AJAX:

  1. Utilizatorul intră într-o pagină web și face clic pe unele dintre elementele acesteia;
  2. Scriptul (în JavaScript ) determină ce informații sunt necesare pentru a actualiza pagina;
  3. Browserul trimite o cerere corespunzătoare către server ;
  4. Serverul returnează doar acea parte a documentului pentru care a venit cererea;
  5. Scriptul face modificări pe baza informațiilor primite (fără o reîncărcare completă a paginii).

Beneficii

Economisirea traficului, reducerea încărcării pe server Când este implementat corect, AJAX vă permite să reduceți de mai multe ori sarcina pe server. În special, toate paginile site-ului sunt generate cel mai adesea după un șablon, inclusiv elemente neschimbate („antet”, „bară de navigare”, „subsol”, etc.), a căror generare necesită acces la diferite fișiere, timpul pentru a procesa scripturi (și uneori interogări către baza de date) - toate acestea pot fi omise dacă înlocuim încărcarea completă a paginii cu generarea și transmiterea doar a conținutului. Reactivitate mai rapidă a UI Deoarece încărcarea părții modificate este mult mai rapidă, utilizatorul vede rezultatul acțiunilor sale mai rapid și fără pâlpâirea paginii (care are loc în timpul unei reîncărcări complete). Oportunități de procesare interactivă De exemplu, când introduceți o interogare de căutare în Google, se afișează un sfat explicativ cu posibile opțiuni de interogare. Pe multe site-uri, la înregistrare, utilizatorul introduce un nume și vede imediat dacă acest nume este disponibil sau nu. AJAX este util pentru programarea chat -urilor , panourilor de administrare și a altor instrumente care afișează date care se modifică în timp. Media nu se va opri Pagina nu se reîncarcă, playerul continuă să funcționeze. Acesta este motivul pentru care AJAX este valoros în găzduirea audio și video. Deci, YouTube pentru 2021 vă permite să redați videoclipuri în modul imagine în imagine .

Dezavantaje

Lipsa integrării cu instrumentele standard de browser URL-ul nu se modifică, prin urmare butonul înapoi nu funcționează, este imposibil să salvați marcajul. Problema poate fi rezolvată cu succes cu History.pushState [5] . Conținutul încărcat dinamic nu este disponibil pentru motoarele de căutare (dacă nu verificați dacă solicitarea este obișnuită sau XMLHttpRequest ) Motoarele de căutare nu pot executa JavaScript , așa că dezvoltatorii trebuie să aibă grijă de modalități alternative de a accesa conținutul site-ului.[ specificați ] . Vechile metode de contabilizare a statisticilor site-ului devin irelevante Multe servicii de statistică țin evidența vizualizărilor paginilor noi de pe site. Pentru site-urile ale căror pagini folosesc extensiv AJAX, această statistică nu mai este relevantă. Complexitatea proiectului Logica procesării datelor este redistribuită - există o selecție și un transfer parțial către partea client a proceselor de formatare a datelor primare. Acest lucru complică controlul integrității formatelor și tipurilor. Efectul final al tehnologiei poate fi compensat de o creștere nerezonabilă a costurilor de codificare și management al proiectelor, precum și de riscul reducerii disponibilității serviciului pentru utilizatorii finali. Necesită JavaScript activat în browser Poate fi dezactivat din motive de securitate. În plus, paginile AJAX sunt dificil de accesat de către browsere care nu sunt complete, roboți și arhive web . Probleme la afișarea codificărilor non-standard în unele scripturi ajax Problemele AJAX și chirilice fac obiectul multor discuții pe Internet [6] . Viteză mică în programare brută În ciuda faptului că AJAX a fost conceput inițial special pentru a crește viteza, poate juca o glumă crudă: când există multe solicitări AJAX pe o pagină și, de exemplu, o listă este încărcată la fiecare clic, pagina AJAX devine și mai lentă. decât una tradițională. Comportament neadecvat în conexiunile nesigure Dacă comunicarea se pierde frecvent (din cauza pierderii operatorului de transport sau a congestionării legăturilor), pagina normală poate fi cel puțin reîncărcată. O pagină AJAX (de exemplu, cu derulare „infinită”) utilizatorul trebuie să reîncarce de la bun început și să caute de unde a rămas. Lucrul în paralel - o caracteristică a AJAX - are un efect negativ aici, împărțind un canal deja îngust în multe conexiuni mici și este probabil ca unele dintre ele să fie rupte. Problema este parțial rezolvată de API-ul istoric. Risc de fabricare a cererii de către alte site-uri Rezultatul unei solicitări AJAX poate fi cod JavaScript (în special, JSON ). XMLHttpRequest este validă numai în cadrul aceluiași domeniu , iar eticheta <script> nu este valabilă. Daca scrii < script type = "text/javascript" src = "http://example.org/inbox.php" ></ script > apoi inbox-ul utilizatorului care este autorizat pe acest computer pe acest computer va fi inserat în HTMLexample.org . Pentru protecție, se folosește o solicitare POST . Dar GET este considerat idempotent și, prin urmare, în cache, POST nu este, așa că Google inserează o buclă infinită la începutul răspunsului : AJAX poate face orice cu răspunsul, inclusiv eliminarea buclei, iar eticheta <script>conectează scriptul așa cum este și bucle.

Tehnologii alternative

În ordine cronologică :

Adobe Flash

Stiva tehnologică Flash (fostă Macromedia Flash) sub formă de ActionScript 3, Adobe Flex și Flash Remoting formează baza tehnologică a RIA (Rich Internet Applications), promovată activ de Macromedia (achiziționată de Adobe ). Tehnologia flash este potrivită pentru o varietate de aplicații, de la jocuri pe calculator până la interfețe complexe de aplicații de afaceri. În cadrul acestei tehnologii, sunt implementate instrumente puternice de suport pentru grafică, care nu sunt disponibile în instrumentele de bază Ajax (deși un număr tot mai mare de caracteristici sunt implementate în standardul HTML5 și CSS3).

Note

  1. Jesse James Garrett. Ajax: O nouă abordare a aplicațiilor web . Adaptive Path (18 februarie 2005). Preluat la 1 martie 2021. Arhivat din original la 12 februarie 2021.
  2. Scripting la distanță cu IFRAME Arhivat 26 iunie 2014 la Wayback Machine 
  3. JsHttpRequest (link descendent) . Data accesului: 24 decembrie 2006. Arhivat din original la 21 octombrie 2007. 
  4. Dave Crane. Ajax în acțiune . - Williams, 2008. - 640 p. — ISBN 9785845910349 . Arhivat pe 12 decembrie 2017 la Wayback Machine
  5. Istoric/API-uri de stat . Consultat la 15 octombrie 2012. Arhivat din original pe 19 octombrie 2011.
  6. AJAX și litere rusești - problemă de codificare. (link indisponibil) . Preluat la 15 august 2016. Arhivat din original la 25 august 2016. 

Literatură

  • Brett McLaughin. Învățarea Ajax = Head Rush Ajax. - Sankt Petersburg. : Peter , 2007. - ISBN 978-5-91180-322-3 .
  • Stephen Holzner. Ajax Programmer's Bible = Biblia Ajax. - M . : Dialectică , 2009. - S. 553. - ISBN 978-5-8459-1502-3 .
  • Dave Crane, Bear Bibo, Jordon Sonneveld. Ajax în practică = Ajax în practică. - M .: Williams , 2007. - ISBN 978-5-8459-1327-2 .
  • Daniel Woolston. Ajax și platforma .NET 2.0 pentru profesioniști = Pro Ajax și platforma .NET 2.0. - M .: Williams , 2007. - S. 464. - ISBN 1-59059-670-6 .
  • Dave Crane, Eric Pascarello, Darren James. AJAX în acțiune: tehnologie - JavaScript asincron și XML = Ajax în acțiune. - M .: Williams , 2006. - S. 640. - ISBN 1-932394-61-3 .

Link -uri