AJAX

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 6. juli 2021; checks kræver 20 redigeringer .
Ajax
Sprog klasse Webapplikation , HTML , JavaScript , DHTML , Document Object Model , XMLHttpRequest , JSON , XML , XSLT , XHTML , Cascading Style Sheets
Dukkede op i 2005
Forfatter James Garrett
 Mediefiler på Wikimedia Commons

AJAX , Ajax ( ˈeɪdʒæks , fra engelsk  Asynchronous Javascript og XML  - "asynchronous JavaScript and XML ") er en tilgang til at bygge interaktive brugergrænseflader til webapplikationer , som består i "baggrunds" -udvekslingen af ​​data mellem browseren og webserveren . Som et resultat, når data opdateres, genindlæses websiden ikke fuldstændigt, og webapplikationer bliver hurtigere og mere bekvemme. På russisk udtales det nogle gange i translitteration som "Ajax". Forkortelsen AJAX har ikke en veletableret analog på kyrillisk.

Historie

Begrebet AJAX blev først brugt offentligt den 18. februar 2005 af Jesse James Garrett i hans artikel "A New Approach to Web Applications" [1]  - sådan kaldte han det nye sæt af teknologier, som han tilbød kunden .

Men i en eller anden form har mange teknologier været tilgængelige og brugt meget tidligere, såsom i "Remote Scripting"-tilgangen foreslået af Microsoft i 1998 , eller ved at bruge HTML IFRAME-elementet, som dukkede op i Internet Explorer 3 i 1996 .

AJAX blev især populær, efter at den blev brugt af Google i Gmail , Google Maps og Google Suggest- tjenester. .

Teknologi

AJAX er ikke en selvstændig teknologi, men konceptet med at bruge flere relaterede teknologier. AJAX er baseret på to hovedprincipper:

Interfacehandlinger konverteres til operationer med DOM ( Document Object Model )-elementer ,  ved hjælp af hvilke de data, der er tilgængelige for brugeren, behandles, hvilket resulterer i, at deres præsentation ændres. Den behandler også musebevægelser og klik samt tastetryk. Cascading Style Sheets , eller CSS ( Cascading Style Sheets ), giver et ensartet udseende og følelse til applikationselementer og gør DOM-objekter nemmere at få adgang til. XMLHttpRequest-objektet (eller lignende mekanismer) bruges til at kommunikere asynkront med serveren, behandle brugeranmodninger og indlæse de nødvendige data, mens de kører.  

Tre af disse fire teknologier - CSS, DOM og JavaScript  - udgør DHTML ( Dynamisk HTML ) .  Ifølge nogle forfattere [4] viste DHTML-værktøjerne, der dukkede op i 1997, meget lovende, men levede ikke op til dem.

Dataoverførselsformatet kan være almindelige tekstfragmenter, HTML -kode, JSON eller XML .

Sammenligning af standardtilgangen og AJAX

I den klassiske webapplikationsmodel:

  1. Brugeren går ind på en webside og klikker på nogle af dens elementer;
  2. Browseren danner og sender en anmodning til serveren ;
  3. Som svar genererer serveren en helt ny webside og sender den til browseren osv., hvorefter browseren genindlæser hele siden fuldstændigt.

Når du bruger AJAX:

  1. Brugeren går ind på en webside og klikker på nogle af dens elementer;
  2. Scriptet (i JavaScript ) bestemmer, hvilke oplysninger der er nødvendige for at opdatere siden;
  3. Browseren sender en passende anmodning til serveren ;
  4. Serveren returnerer kun den del af dokumentet, som anmodningen kom for;
  5. Scriptet foretager ændringer baseret på de modtagne oplysninger (uden genindlæsning af en hel side).

Fordele

Sparer trafik, reducerer belastningen på serveren Når den er korrekt implementeret, giver AJAX dig mulighed for at reducere belastningen på serveren flere gange. Især er alle sider på webstedet oftest genereret i henhold til en skabelon, inklusive uændrede elementer ("header", "navigationslinje", "footer" osv.), hvis generering kræver adgang til forskellige filer, tidspunktet at behandle scripts (og nogle gange forespørgsler til databasen) - alt dette kan udelades, hvis vi erstatter den fulde sideindlæsning med generering og transmission af kun indholdet. Hurtigere UI-respons Da indlæsningen af ​​den ændrede del er meget hurtigere, ser brugeren resultatet af sine handlinger hurtigere og uden sideflimmer (opstår under en fuld genindlæsning). Muligheder for interaktiv behandling For eksempel, når du indtaster en søgeforespørgsel i Google, vises et værktøjstip med mulige forespørgselsmuligheder. På mange websteder, når brugeren registrerer sig, indtaster brugeren et navn og ser straks, om dette navn er tilgængeligt eller ej. AJAX er nyttig til programmering af chats , admin paneler og andre værktøjer, der viser data, der ændrer sig over tid. Medierne stopper ikke Siden genindlæses ikke, afspilleren fortsætter med at arbejde. Dette er grunden til, at AJAX er værdifuld i lyd- og videohosting. Så YouTube for 2021 giver dig mulighed for at afspille videoer i billed-i-billede- tilstand .

Ulemper

Manglende integration med standard browserværktøjer URL'en ændres ikke, derfor virker tilbage-knappen ikke, det er umuligt at gemme bogmærket. Problemet kan med succes løses med History.pushState [5] . Dynamisk indlæst indhold er ikke tilgængeligt for søgemaskiner (hvis du ikke tjekker, om anmodningen er almindelig eller XMLHttpRequest ) Søgemaskiner kan ikke udføre JavaScript , så udviklere skal sørge for alternative måder at få adgang til webstedsindhold på.[ angiv ] . Gamle metoder til regnskabsføring af webstedsstatistikker bliver irrelevante Mange statistiktjenester holder styr på visninger af nye sider på siden. For websteder, hvis sider bruger AJAX i udstrakt grad, er denne statistik ikke længere relevant. Projektets kompleksitet Logikken i databehandling er omfordelt - der er en udvælgelse og delvis overførsel til klientsiden af ​​processerne for primær dataformatering. Dette komplicerer kontrollen af ​​integriteten af ​​formater og typer. Sluteffekten af ​​teknologien kan blive opvejet af en urimelig stigning i omkostningerne til kodning og projektledelse samt risikoen for at reducere tilgængeligheden af ​​tjenesten for slutbrugere. Kræver JavaScript aktiveret i browseren Det kan være deaktiveret af sikkerhedsmæssige årsager. Derudover er AJAX-sider svære at få adgang til for ikke-komplette browsere, robotter og webarkiver . Problemer med at vise ikke-standardkoder i nogle ajax-scripts AJAX og kyrilliske spørgsmål er genstand for mange diskussioner på internettet [6] . Langsom hastighed i grov programmering På trods af at AJAX oprindeligt blev designet specifikt til at øge hastigheden, kan den spille en grusom joke: Når der er mange AJAX-forespørgsler på én side, og for eksempel en liste indlæses for hvert klik, bliver AJAX-siden endnu langsommere end en traditionel. Dårlig opførsel på upålidelige forbindelser Hvis kommunikationen ofte går tabt (på grund af tab af operatør eller overbelastning af linket), kan den normale side i det mindste genindlæses. En AJAX-side (for eksempel med "uendelig" rulning) skal brugeren genindlæse fra begyndelsen og se efter, hvor han slap. Parallelt arbejde - en funktion af AJAX - har en negativ effekt her, idet den deler en allerede smal kanal i mange små forbindelser, og det er sandsynligt, at nogle af dem vil blive brudt. Problemet er delvist løst af History API. Risiko for anmodningsfabrikation fra andre websteder Resultatet af en AJAX-anmodning kan være JavaScript -kode (især JSON ). XMLHttpRequest er kun gyldig inden for det samme domæne , og tagget <script> er det ikke. Hvis du skriver < script type = "text/javascript" src = "http://example.org/inbox.php" ></ script > derefter vil indbakken til den bruger, der er autoriseret på denne computer på denne computer, blive indsat i HTMLexample.org -koden . Til beskyttelse bruges en POST- anmodning. Men GET anses for at være idempotent og derfor cachelagret, POST er det ikke, så Google indsætter en uendelig løkke i begyndelsen af ​​svaret : AJAX kan gøre hvad som helst med svaret, inklusive at fjerne løkken, og taggen <script>forbinder scriptet, som det er og løkker.

Alternative teknologier

I kronologisk rækkefølge:

Adobe Flash

Flash- teknologistakken (tidligere Macromedia Flash) i form af ActionScript 3, Adobe Flex og Flash Remoting danner det teknologiske grundlag for RIA (Rich Internet Applications), aktivt fremmet af Macromedia (erhvervet af Adobe ). Flash-teknologi er velegnet til en række applikationer, fra computerspil til komplekse forretningsapplikationsgrænseflader. Inden for rammerne af denne teknologi implementeres kraftfulde grafikstøtteværktøjer, som ikke er tilgængelige i de grundlæggende Ajax-værktøjer (selvom et stigende antal funktioner implementeres inden for HTML5- og CSS3-standarden).

Noter

  1. Jesse James Garrett. Ajax: En ny tilgang til webapplikationer . Adaptive Path (18. februar 2005). Hentet 1. marts 2021. Arkiveret fra originalen 12. februar 2021.
  2. Fjernscripting med IFRAME Arkiveret 26. juni 2014 på Wayback Machine 
  3. JsHttpRequest (downlink) . Dato for adgang: 24. december 2006. Arkiveret fra originalen 21. oktober 2007. 
  4. Dave Crane. Ajax i aktion . - Williams, 2008. - 640 s. — ISBN 9785845910349 . Arkiveret 12. december 2017 på Wayback Machine
  5. Historik/State API'er . Hentet 15. oktober 2012. Arkiveret fra originalen 19. oktober 2011.
  6. AJAX og russiske bogstaver - kodningsproblem. (utilgængeligt link) . Hentet 15. august 2016. Arkiveret fra originalen 25. august 2016. 

Litteratur

  • Brett McLaughin. At lære Ajax = Head Rush Ajax. - Sankt Petersborg. : Peter , 2007. - ISBN 978-5-91180-322-3 .
  • Stephen Holzner. Ajax Programmer's Bible = Ajax Bible. - M . : Dialektik , 2009. - S. 553. - ISBN 978-5-8459-1502-3 .
  • Dave Crane, Bear Bibo, Jordon Sonneveld. Ajax i praksis = Ajax i praksis. - M .: Williams , 2007. - ISBN 978-5-8459-1327-2 .
  • Daniel Woolston. Ajax og .NET 2.0-platformen for professionelle = Pro Ajax og .NET 2.0-platformen. - M .: Williams , 2007. - S. 464. - ISBN 1-59059-670-6 .
  • Dave Crane, Eric Pascarello, Darren James. AJAX i aktion: teknologi - Asynkron JavaScript og XML = Ajax i aktion. - M .: Williams , 2006. - S. 640. - ISBN 1-932394-61-3 .

Links