DžejKveri (engl. jQuery) je višeplatmforska Javaskript (engl. JavaScript) biblioteka dizajnirana da pojednostavi skriptovanje sa korisničke strane jezika HTML. [1] DžejKveri je najpopularnija Javaskript biblioteka u upotrebi danas koju koristi 65% od najposećenijih 10 miliona sajtova na vebu.[2][3][4] DžejKveri je slobodan i softver otvorenog izvornog koda licenciran pod MIT licencom.

Sintaksa DžejKveri biblioteke je dizajnirana da pojednostavi navigaciju ka dokumentu, selektovanje DOM elemenata, pravljenje animacija, obrađivanje događaja i razvoj Ajaks (engl. Ajax) aplikacija. DžejKveri takođe pruža mogućnost programerima da naprave dodatke preko Javaskript bilbioteke. Ovo omogućava programerima da naprave apstrakcije za interakciju niskog nivoa i animaciju, napredne efekte i vidžete visokog nivoa koji mogu imati teme. Modularni pristup DžejKveri biblioteci omogućava stvaranje moćnih dinamičkih veb strana i veb aplikacija.

Komplet osnovnih mogućnosti DžejKveri biblioteke — selektovanje DOM (engl. DOM) elementa, promena i manipulacija omogućena mašinom za selektovanje (nazvana Sizl (engl. Sizzle) iz verzije 1.3) kreirala je novi ”stil programiranja”, povezujući algoritme i strukture DOM podataka. Ovaj stil je uticao na arhitekturu drugih Javaskript okruženja YUI v3 i Dodžo (engl. Dojo), kasnije pospešujući kreiranje starndardnog API-ja za selektovanje.[5]

Majkrosoft (engl. Microsoft) i Nokija (engl. Nokia) su povezali DžejKveri na svoje platforme.[6] Majkrosoft ga uključuje u Vižual Studio (engl. Visual Studio)[7] za upotrebu u ASP. NET AJAKS i ASP. NET MVC okruženjima koje je konstruisao Majkrosoft, dok ga je Nokija integrisala u veb platformu koja pokazuje razvoj vidžeta u realnom vremenu.[8] DžejKveri je upotrebljavan u Media Vikiju od verzije 1.16.[9]

Pregled uredi

DžejKveri je, u svojoj srži, DOM za kontrolu nad bibliotekama. DOM je drvolika reprezentacija svih elemenata veb strane i DžejKveri pojednostavljuje sintaksu za pronalaženje, selektovanje i manipulaciju tih DOM elemenata. Na primer, DžejKveri se može koristiti za pronalaženje elemenata u dokumentu sa određenim svojstvima (npr. svi elementi sa h1 etiketom engl. tag), menjanje jednog ili više njegovih svojstva (npr. boja, vidljivost), ili praviti ga takvog da reaguje na događaj (npr. klik mišem).

DžejKveri takođe nudi paradigmu za rukovođenje događajima koji prevazilaze osnovne DOM mogućnosti selekcije i manipulacije elementom. Definisanje funkcija za dodelu događaja i opozivanje događaja rade se u jednom koraku i na jednom mestu u kodu. DžejKveri takođe cilja ka uključivanju drugih izuzetno korišćenih Javaskript funkcionalnosti (npr. animacije prilikom manipulacije nad CSS svojstvima).

Prednosti pri korišćenju Džejkverija:

  • Stimuliše razdvajanje Javaskripte i HTML-a: DžejKveri biblioteka nudi jednostavnu sintaksu za dodavanje rukovodioca događajem DOM-u pri korišćenju Javaskripte, što je bolje od dodavanja atributa HTML događaju za pozivanje Javaskript funkcija. Prema tome, podržava veb programere da potpuno razdvoje Javaskript kod od HTML oznaka.
  • Sve je kratko i jasno: DžejKveri promoviše kratak i jasan kod sa karakteristikama poput mođućeg ulančavanja funkcija i kratkih i opisnih imena funkcija.
  • Eliminiše nekompatabilnosti pri pisanju koda za različite pretraživače: Javaskript pogon različitih pretraživača se neznatno razlikuje pa Javaskript kod koji radi na jednom pretraživaču možda neće raditi na nekom drugom. Poput drugih Javaskript grupa alata, DžejKveri kontroliše sve nekonzistentnosti među različitim pregledačima i nudi konzistentan interfejs koji radi na svim pregledačima.
  • Lako se nadograđuje: Novi događaji, elementi i metode mogu se jednostavno dodati i potom ponovo iskoristiti u obliku dodataka.

Osobine uredi

DžejKveri ukljućuje sledeće osobine:

  • Selektovanje DOM elemenata korišćenjem više-pretraživaćkom bibliotekom otvorenog koda selektorske mašine, kao nusproizvod DžejKveri projekta[10]
  • Manipulacija DOM elementima na osnovu CSS selektora koji koriste imena i osobine elemenata ako što su id i class, kao kriterijumi za selekciju elemenata u DOM
  • Događaji
  • Efekti i animacije
  • Ajaks
  • Odloženi i Obećani objekti za kontrolu nesinhrone obrade
  • Parsiranje JSON-a
  • Proširivanje promoću dodataka
  • Alati, kao što je detektovanje osobina
  • Metode za detektovanje saglasnosti koje su izvorno dostupne u modernim pretraživačima, ali postoji potreba za "fall backs"-om za starije, kao inArray() i each()
  • Više pretraživačka (ne treba ih pomešati sa kros pretraživačima) pomoć

Podrška za pregledačima uredi

Verzija 1.h kao i verzija 2.h DžejKveri biblioteke podržavaju trenutne 1 verzije (što znači tenutnu stabilnu verziju pregledačima i verzije koje su joj prethodile) Fajerfoksa (engl. Firefox), Hroma (engl. Chrome), Safarija (engl. Safari) i Opere (engl. Opera). Verzija 1.h takođe podržava Internet Eksplorer 6 (engl. Internet Explorer 6) ili novije verzije. Međutim verzija 2.h DžejKveri biblioteke ne podržava Internet eksplorer verzije 6 do 8 (koji predstavljaju samo 2% ukupne upotrebe veb pregledačima)[11] i podržava samo verziju 9 i novije verzije.[12]

Korišćenje uredi

Uključenje biblioteke uredi

DžejKveri biblioteka je Javaskript dokument koji sadrži događaje, efekte i Ajaks funkcije. Može se uključiti u veb stranicu linkovanjem na lokalnu kopiju ili na jednu od mnogih kopija koje su dostupne na serverima.


Povezivanje sa lokalnom kopijom:

<script src="jquery.js"></script>

Povezivanje sa kopijom na serveru:

<script src="https://code.jquery.com/jquery-latest.min.js"></script>

Stilovi korišćenja uredi

DžejKveri ima dva stila korišćenja:

  • Pomoću $ funkcije, koja je fabrički metod DžejKveri objekata. Ove funkcije je moguće ulančavati, pošto sve vraćaju DžejKveri objekat.
  • Pomoću$.-prefiksnih funkcija. One se ne odnose direktno na DžejKveri objekte.

Pristup i manipulacija više DOM čvorova u DžejKveriju tipično počinje pozivom $ funkcije čiji je argument CSS selektor (kao niska). Ona vraća DžejKveri objekat koji referiše na sve odgovarajuće HTML elementa stranice. $("div.test"), na primer, vraća DžejKveri objekat sa svim div elementima klase test. Ovaj skup čvorova može biti manipulisan pozivajući metode na DžejKveri objekat ili na same čvorove.

Mod bez preklapanja uredi

DžejKveri takođe sadrži .noConflict() mod, koji se oslobađa $. Ovo može biti korisno, ako se DžejKveri koristi sa drugim bibiliotekama koje takođe koriste $ kao identifikator. U ovom modu programeri mogu koristiti identifikator jQuery kao zamenu za $ bez gubljenja funkcionalnosti.[13]

Tipičan skelet uredi

Tipično korišćenje DžejKveri biblioteke je kreiranje događaja pomoću metode .ready(). Ova metoda će biti pokrenuta kada pretraživač konstruiše DOM stablo i pošalje "load" događaj.

<script type="text/javascript">
$(document).ready(function(){
        // jQuery код, хватање догађаја овде
});
</script>

"Callback" funkcije su takođe sadržane u .ready() kao anonimne funkcije, ali se pozivaju kada je pokrenut događaj za "callback" Na primer, sledeći kod dodaje događaj za klik mišem na img element.

$(document).ready(function(){
        $('img').click ( function() {
              // obrađuje klik događaj na bilo koji img element na stranici
        });
});

Sledeće sintakse su ekvivalentne:

  • $(document).ready(handler)
  • $(handler)

Ulančavanje uredi

Svaka DžejKveri komanda vraća DžejKveri objekat, tako da se one mogu ulančavati.

$("div.test").add("p.naslov").addClass("plavi").slideDown("slow");

Ovaj niz polja predstavlja uniju svih div tagova sa klasnim atributom test i sve tagove p sa klasnim atributom naslov, dodaje klasni atribut plavi na svaki odgovarajući element, i animira njihovo pojavljivanje na ekran.

Kreiranje novih DOM elemenata uredi

Osim pristupa postojećim DOM čvorovima, pomoću DžejKverija je moguće i kreiranje novih DOM elemenata, ako niska prosleđena kao argument $() izgleda kao HTML. Na primer, sledeći kod pronalazi HTML element select sa ID-em marke i dodaje element option sa vrednošću "VAG" i tekstom "Volkswagen":

$('select#marke').append($('<option />').attr({value:"VAG"}).append("Volkswagen"));

Utilitarne funkcije uredi

Funkcije koje imaju prefiks $. su utilitarne funkcije ili funkcije koje utiču na globalna svojstva i ponašanja. Na primer, sledeći kod predstavlja funkciju koja prolazi kroz niz test:

$.test([1,2,3], function() {
  console.log(this + 1);
});

Funkcija ispisuje "2", "3", "4" na konzolu.

Ajaks uredi

Moguće je obaviti upite nezavisno od pregledača i potom učitati i manipulisati sa udaljenim podacima.

$.ajax({
  type: "POST",
  url: "test.php",
  data: "name=Pera&location=Beograd"
}).done(function(msg) {
  alert("Podaci su sačuvani: " + msg);
}).fail(function(xmlHttpRequest, statusText, errorThrown) {
  alert(
    "Vaš zahtev nije uspešno izvršen.\n\n"
      + "XML Http Zahtev: " + JSON.stringify(xmlHttpRequest)
      + ",\nStatus: " + statusText
      + ",\nGreška: " + errorThrown);
});

Ovaj primer šalje podatke name=Pera i location=Beograd stranici test.php. Kada se zahtev uspešno završi, korisniku se pojavljuje prozor sa odgovarajućom porukom (alert). U suprotnom, korisniku će biti prosleđeni poruka da je došlo do greške, kao i status zahteva i tačna greška.

Dodaci za DžejKveri uredi

Arhitektura DžejKverija dozvoljava developerima da prave kod dodataka kako bi proširili njegovu funkcionalnost. Postoji na hiljade DžejKveri dodataka koji su dostupni na Vebu i pokrivaju širok spektar funkcija, poput pomagača za Ajaks, Veb servisa, bazi podataka, dinamičkih listi, XML i XSLT alata, događaja, kontrola kolačića i modalnih prozora.[14]

Važan izvor DžejKveri dodataka je poddomen dodataka sajta DžejKveri projekta.[14] Dodaci ovog domena su slučajno izbrisani u decembru 2011. godine u pokušaju da se sajt očisti od neželjenog sadržaja..[15] Novi sajt će sadržati GitHub-hostovano (engl. GitHub) skladište koje će od developera zahtevati da ponovo dodaju svoje dodatke i da podlegnu novim zahtevima za dodavanje sadržaja.[16] Postoje alternativni pogoni za pretragu dodataka[17][18] poput jquer.in koji koriste specijalizovan pristup, poput izlistavanja samo dodataka koji ispunjavaju određene kriterijume (npr. Oni koji imaju javno skladište kodova). DžejKveri nudi "Centar za obuku" koji može pomoći korisnicima da razumeju Javaskript i počnu da razvijaju DžejKveri dodatke.[19]

Istorija uredi

DžejKveri je originalno objavljen u Januaru 2006 u "Barkampu" (engl. BarCamp) u Njujorku od strane Džon Resiga i bio je pod ranijim uticajem csskveri biblioteke Dina Edvardsa. [20] Trenutno je održavana od strane programera koji su predvođeni Timijem Vilsonom (sa DžejKveri mašinom za selektovanje, Sizl, koji vodi Ričard Gibson )

DžejKveri je imao interesantnu istoriju licenci.[21] Originalno pod CC BY-SA 2.5, bio je relicenciran na MIT licencu u 2006.[22] Na kraju 2006-te imao je dvojno licenciran pod GPL i MIT licencom..[23] Kako je ovo dovodilo do zabune, u 2012 FPL liecnca je odbačena i danas je samo pod MIT licencom.[24]

Od 2015. DžejKveri ostaje najšire korišćena Javaskript biblioteka na Veb-u Prema servisu za analitiku Javaskript biblioteka, Libskor (engl. Libscore), DžejKveri se koristi na preko 65% on prvih milion najpopularnijih sajtova prema veličini ostvarenog saobraćaja.[4] Poznati sajtovi koji ga koriste uključuju Tviter (engl. Twitter), LinkedIn (engl. LinkedIn), Pintrest (engl. Pinterest), i iBej (engl. eBay).[25]

Istorija objavljivanja uredi

Broj verzije Datum objavljivanja Poslednja verzija Veličina produkta (KB) Dodatne napomene
1.0 26. avgust 2006. (2006-08-26) Prva stabilna verzija
1.1 14. januar 2007. (2007-01-14)
1.2 10. septembar 2007. (2007-09-10)
1.3 14. januar 2009. (2009-01-14) 55.9 Selektorska mašina Sizzle dodata u jezgro
1.4 14. januar 2010. (2010-01-14)
1.5 31. januar 2011. (2011-01-31) Upravljanje odloženim povratnim pozivima, predefinisan modul AJAKS
1.6 3. maj 2011. (2011-05-03) Značajno poboljšanje performansi attr() i val() funkcija
1.7 3. novembar 2011. (2011-11-03) Novi događaji.on() i .off(), stari ostaju podržani.
1.8 9. avgust 2012. (2012-08-09) 91.4 Selektorska mašina Sizzle prepravljena, unapređene animacije i $(html, props) fleksibilnost.
1.9 15. januar 2013. (2013-01-15) 1.9.1[26] Uklanjanje zastarelog interfejsa i čišćenje koda
1.10 24. maj 2013. (2013-05-24) 1.10.2 (3. jul 2013. (2013-07-03)) Pripojene ispravke grešaka i razlike prijavljenih iz 1,9 i 2,0 beta ciklusa
1.11 24. januar 2014. (2014-01-24) 1.11.3 (28. april 2015. (2015-04-28)) 95.9
1.12 8. januar 2016. (2016-01-08) 1.12.3 (5. april 2016. (2016-04-05)) 95
2.0 18. april 2013. (2013-04-18) 2.0.3 (3. jul 2013. (2013-07-03)) 81.1 Prestanak podržavanja IE 6–8 za poboljšanje performansi i smanjivanje veličine datoteka
2.1 24. januar 2014. (2014-01-24) 2.1.4 (28. april 2015. (2015-04-28)) 82.4
2.2 8. januar 2016. (2016-01-08) 2.2.4 (20. maj 2016. (2016-05-20)) 85.6


Okvir za testiranje uredi

KjuJunit (engl. QUnit) je frejmvork za automatizovano testiranje korišćen unutar DžejKveri projekta. DžejKveri tim ga je razvio kao bibliotkeku za integrisano testiranje jedinica i koristi se za testiranje kodova i dodataka, ali može testirati generički Javaskript kod, uključujuči kod Javaskripta na serverskoj strani.[27]

Od 2011. godine, DžejKveri tim za testiranje koristi KjuJunit sa TestSvarm (engl. TestSwarm) okvirom da testira svaku novu verziju DžejKveri koda.[28]


Vidi još uredi

Reference uredi

  1. ^ „jQuery: The write less, do more, JavaScript library”. The jQuery Project. Pristupljeno 29. 4. 2010. 
  2. ^ „Usage of JavaScript libraries for websites”. Pristupljeno 14. 7. 2015. 
  3. ^ „jQuery Usage Statistics”. Arhivirano iz originala 25. 12. 2018. g. Pristupljeno 17. 5. 2013. 
  4. ^ a b http://libscore.com/#libs
  5. ^ "Selectors API Level 1, W3C Recommendation" (21 February 2013). This standard turned what was jQuery "helper methods" into JavaScript-native ones, and the wide use of jQuery stimulated the fast adoption of querySelector/querySelectorAll into main Web browsers.
  6. ^ Resig, John (28. 9. 2008). „jQuery, Microsoft, and Nokia”. jQuery Blog. jQuery. Pristupljeno 29. 1. 2009. 
  7. ^ Guthrie, Scott (28. 9. 2008). „jQuery and Microsoft”. ScottGu's Blog. Pristupljeno 29. 1. 2009. 
  8. ^ „Guarana UI: A jQuery Based UI Library for Nokia WRT”. Forum Nokia. Arhivirano iz originala 23. 11. 2009. g. Pristupljeno 30. 3. 2010. 
  9. ^ „jQuery”. MediaWiki. 19. 1. 2012. Pristupljeno 11. 3. 2012. 
  10. ^ Resig, John (14. 1. 2009). „jQuery 1.3 and the jQuery Foundation”. jQuery Blog. Pristupljeno 4. 5. 2009. 
  11. ^ CanIUse Browser Usage Table
  12. ^ Browser Support | jQuery
  13. ^ „jQuery.noConflict() jQuery API Documentation”. 
  14. ^ a b „Plugins”. The jQuery Project. Pristupljeno 26. 8. 2010. 
  15. ^ „What Is Happening To The jQuery Plugins Site?”. Pristupljeno 22. 4. 2015. 
  16. ^ „jquery/plugins.jquery.com”. GitHub. Pristupljeno 22. 4. 2015. 
  17. ^ „jQuery Plugins Search”. Arhivirano iz originala 15. 05. 2013. g. Pristupljeno 13. 9. 2012. 
  18. ^ Kanakiya, Jay. „jquery plugins”. 
  19. ^ „jQuery Learning Center”. jQuery Foundation. Pristupljeno 2. 7. 2014. 
  20. ^ York 2009, str. 28.
  21. ^ jquery history Arhivirano na sajtu Wayback Machine (25. novembar 2016) on softwarefreedom.org
  22. ^ jquery-under-the-mit-license on jquery.org (2006)
  23. ^ license on jquery.org (archived 2010)
  24. ^ jquery-licensing-changes on jquery.org (2012)
  25. ^ http://libscore.com/#jQuery
  26. ^ „jQuery 1.9.1 Released”. Pristupljeno 22. 4. 2015. 
  27. ^ „History”. qunitjs.com. Pristupljeno 2. 7. 2014. 
  28. ^ jQuery Testing Team Wiki

Literatura uredi

Dodatna literatura uredi

Spoljašnje veze uredi