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:
- folosind tehnologia de acces dinamic la server „din zbor”, fără a reîncărca complet întreaga pagină, de exemplu, folosind XMLHttpRequest (obiectul principal);
- prin crearea dinamică a cadrelor copil [2] ;
- prin crearea dinamică a etichetei <script> [3] ;
- prin crearea dinamică a etichetei <img>, așa cum este implementată în Google Analytics.
- utilizarea DHTML pentru a schimba dinamic conținutul paginii;
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:
- Utilizatorul intră într-o pagină web și face clic pe unele dintre elementele acesteia;
- Browserul formează și trimite o cerere către server ;
- 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:
- Utilizatorul intră într-o pagină web și face clic pe unele dintre elementele acesteia;
- Scriptul (în JavaScript ) determină ce informații sunt necesare pentru a actualiza pagina;
- Browserul trimite o cerere corespunzătoare către server ;
- Serverul returnează doar acea parte a documentului pentru care a venit cererea;
- 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
- ↑ 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. (nedefinit)
- ↑ Scripting la distanță cu IFRAME Arhivat 26 iunie 2014 la Wayback Machine
- ↑ JsHttpRequest (link descendent) . Data accesului: 24 decembrie 2006. Arhivat din original la 21 octombrie 2007. (nedefinit)
- ↑ Dave Crane. Ajax în acțiune . - Williams, 2008. - 640 p. — ISBN 9785845910349 . Arhivat pe 12 decembrie 2017 la Wayback Machine
- ↑ Istoric/API-uri de stat . Consultat la 15 octombrie 2012. Arhivat din original pe 19 octombrie 2011. (nedefinit)
- ↑ AJAX și litere rusești - problemă de codificare. (link indisponibil) . Preluat la 15 august 2016. Arhivat din original la 25 august 2016. (nedefinit)
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
Web și site-uri web |
---|
la nivel global |
|
---|
La nivel local |
|
---|
Tipuri de site-uri și servicii |
|
---|
Creare si intretinere |
|
---|
Tipuri de machete, pagini, site-uri |
|
---|
Tehnic |
|
---|
Marketing |
|
---|
Societate și cultură |
|
---|