JQuery

С Википедије, слободне енциклопедије

ЏејКвери (енгл. jQuery) је вишеплатмфорска Јаваскрипт (енгл. JavaScript) библиотека дизајнирана да поједностави скриптовање са корисничке стране језика HTML. [1] ЏејКвери је најпопуларнија Јаваскрипт библиотека у употреби данас коју користи 65% од најпосећенијих 10 милиона сајтова на вебу.[2][3][4] ЏејКвери је слободан и софтвер отвореног изворног кода лиценциран под МИТ лиценцом.

Синтакса ЏејКвери библиотеке је дизајнирана да поједностави навигацију ка документу, селектовање ДОМ елемената, прављење анимација, обрађивање догађаја и развој Ајакс (енгл. Ajax) апликација. ЏејКвери такође пружа могућност програмерима да направе додатке преко Јаваскрипт билбиотеке. Ово омогућава програмерима да направе апстракције за интеракцију ниског нивоа и анимацију, напредне ефекте и виџете високог нивоа који могу имати теме. Модуларни приступ ЏејКвери библиотеци омогућава стварање моћних динамичких веб страна и веб апликација.

Комплет основних могућности ЏејКвери библиотеке — селектовање ДОМ (енгл. DOM) елемента, промена и манипулација омогућена машином за селектовање (названа Сизл (енгл. Sizzle) из верзије 1.3) креирала је нови ”стил програмирања”, повезујући алгоритме и структуре ДОМ података. Овај стил је утицао на архитектуру других Јаваскрипт окружења YUI v3 и Доџо (енгл. Dojo), касније поспешујући креирање старндардног АПИ-ја за селектовање.[5]

Мајкрософт (енгл. Microsoft) и Нокија (енгл. Nokia) су повезали ЏејКвери на своје платформе.[6] Мајкрософт га укључује у Вижуал Студио (енгл. Visual Studio) [7] за употребу у АСП. НЕТ АЈАКС и АСП. НЕТ MVC окружењима које је конструисао Мајкрософт, док га је Нокија интегрисала у веб платформу која показује развој виџета у реалном времену.[8] ЏејКвери је употребљаван у Медиа Викију од верзије 1.16.[9]

Преглед[уреди | уреди извор]

ЏејКвери је, у својој сржи, ДОМ за контролу над библиотекама. ДОМ је дрволика репрезентација свих елемената веб стране и ЏејКвери поједностављује синтаксу за проналажење, селектовање и манипулацију тих ДОМ елемената. На пример, ЏејКвери се може користити за проналажење елемената у документу са одређеним својствима (нпр. сви елементи са h1 етикетом енгл. tag), мењање једног или више његових својства (нпр. боја, видљивост), или правити га таквог да реагује на догађај (нпр. клик мишем).

ЏејКвери такође нуди парадигму за руковођење догађајима који превазилазе основне ДОМ могућности селекције и манипулације елементом. Дефинисање функција за доделу догађаја и опозивање догађаја раде се у једном кораку и на једном месту у коду. ЏејКвери такође циља ка укључивању других изузетно коришћених Јаваскрипт функционалности (нпр. анимације приликом манипулације над CSS својствима).

Предности при коришћењу Џејкверија:

  • Стимулише раздвајање Јаваскрипте и HTML-а: ЏејКвери библиотека нуди једноставну синтаксу за додавање руководиоца догађајем ДОМ-у при коришћењу Јаваскрипте, што је боље од додавања атрибута HTML догађају за позивање Јаваскрипт функција. Према томе, подржава веб програмере да потпуно раздвоје Јаваскрипт код од HTML ознака.
  • Све је кратко и јасно: ЏејКвери промовише кратак и јасан код са карактеристикама попут мођућег уланчавања функција и кратких и описних имена функција.
  • Елиминише некомпатабилности при писању кода за различите претраживаче: Јаваскрипт погон различитих претраживача се незнатно разликује па Јаваскрипт код који ради на једном претраживачу можда неће радити на неком другом. Попут других Јаваскрипт група алата, ЏејКвери контролише све неконзистентности међу различитим прегледачима и нуди конзистентан интерфејс који ради на свим прегледачима.
  • Лако се надограђује: Нови догађаји, елементи и методе могу се једноставно додати и потом поново искористити у облику додатака.

Особине[уреди | уреди извор]

ЏејКвери укљућује следеће особине:

  • Селектовање ДОМ елемената коришћењем више-претраживаћком библиотеком отвореног кода селекторске машине, као нуспроизвод ЏејКвери пројекта[10]
  • Манипулација ДОМ елементима на основу CSS селектора који користе имена и особине елемената ако што су id и class, као критеријуми за селекцију елемената у ДОМ
  • Догађаји
  • Ефекти и анимације
  • Ajaks
  • Одложени и Обећани објекти за контролу несинхроне обраде
  • Парсиранје JSON-а
  • Прошириванје промоћу додатака
  • Алати, као што је детектовање особина
  • Методе за детектовање сагласности које су изворно доступне у модерним претраживачима, али постоји потреба за "fall backs"-ом за старије, као inArray() и each()
  • Више претраживачка (не треба их помешати са крос претраживачима) помоћ

Подршка за прегледачима[уреди | уреди извор]

Верзија 1.х као и верзија 2.х ЏејКвери библиотеке подржавају тренутне 1 верзије (што значи тенутну стабилну верзију прегледачима и верзије које су јој претходиле) Фајерфокса (енгл. Firefox), Хрома (енгл. Chrome), Сафарија (енгл. Safari) и Опере (енгл. Opera). Верзија 1.х такође подржава Интернет Експлорер 6 (енгл. Internet Explorer 6) или новије верзије. Међутим верзија 2.х ЏејКвери библиотеке не подржава Интернет експлорер верзије 6 до 8 (који представљају само 2% укупне употребе веб прегледачима)[11] и подржава само верзију 9 и новије верзије.[12]

Коришћење[уреди | уреди извор]

Укључење библиотеке[уреди | уреди извор]

ЏејКвери библиотека је Јаваскрипт документ који садржи догађаје, ефекте и Ајакс функције. Може се укључити у веб страницу линковањем на локалну копију или на једну од многих копија које су доступне на серверима.


Повезивање са локалном копијом:

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

Повезивање са копијом на серверу:

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

Стилови коришћења[уреди | уреди извор]

ЏејКвери има два стила коришћења:

  • Помоћу $ функције, која је фабрички метод ЏејКвери објеката. Ове функције је могуће уланчавати, пошто све враћају ЏејКвери објекат.
  • Помоћу$.-префиксних функција. Оне се не односе директно на ЏејКвери објекте.

Приступ и манипулација више DOM чворова у ЏејКверију типично почиње позивом $ функције чији је аргумент CSS селектор (као ниска). Она враћа ЏејКвери објекат који реферише на све одговарајуће HTML елемента странице. $("div.test"), на пример, враћа ЏејКвери објекат са свим div елементима класе test. Овај скуп чворова може бити манипулисан позивајући методе на ЏејКвери објекат или на саме чворове.

Мод без преклапања[уреди | уреди извор]

ЏејКвери такође садржи .noConflict() мод, који се ослобађа $. Ово може бити корисно, ако се ЏејКвери користи са другим бибилиотекама које такође користе $ као идентификатор. У овом моду програмери могу користити идентификатор jQuery као замену за $ без губљења функционалности.[13]

Типичан скелет[уреди | уреди извор]

Типично коришћење ЏејКвери библиотеке је креирање догађаја помоћу методе .ready(). Ова метода ће бити покренута када претраживач конструише DOM стабло и пошаље "load" догађај.

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

"Callback" функције су такође садржане у .ready() као анонимне функције, али се позивају када је покренут догађај за "callback" На пример, следећи код додаје догађај за клик мишем на img елемент.

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

Следеће синтаксе су еквивалентне:

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

Уланчавање[уреди | уреди извор]

Свака ЏејКвери команда враћа ЏејКвери објекат, тако да се оне могу уланчавати.

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

Овај низ поља представља унију свих div тагова са класним атрибутом test и све тагове p са класним атрибутом naslov, додаје класни атрибут plavi на сваки одговарајући елемент, и анимира њихово појављивање на екран.

Креирање нових ДОМ елемената[уреди | уреди извор]

Осим приступа постојећим ДОМ чворовима, помоћу ЏејКверија је могуће и креирање нових ДОМ елемената, ако ниска прослеђена као аргумент $() изгледа као HTML. На пример, следећи код проналази HTML елемент select са ID-ем marke и додаје елемент option са вредношћу "VAG" и текстом "Volkswagen":

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

Утилитарне функције[уреди | уреди извор]

Функције које имају префикс $. су утилитарне функције или функције које утичу на глобална својства и понашања. На пример, следећи код представља функцију која пролази кроз низ test:

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

Функција исписује "2", "3", "4" на конзолу.

Ајакс[уреди | уреди извор]

Могуће је обавити упите независно од прегледача и потом учитати и манипулисати са удаљеним подацима.

$.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);
});

Овај пример шаље податке name=Pera и location=Beograd страници test.php. Када се захтев успешно заврши, кориснику се појављује прозор са одговарајућом поруком (alert). У супротном, кориснику ће бити прослеђени порука да је дошло до грешке, као и статус захтева и тачна грешка.

Додаци за ЏејКвери[уреди | уреди извор]

Архитектура ЏејКверија дозвољава девелоперима да праве код додатака како би проширили његову функционалност. Постоји на хиљаде ЏејКвери додатака који су доступни на Вебу и покривају широк спектар функција, попут помагача за Ајакс, Веб сервиса, бази података, динамичких листи, XML и XSLT алата, догађаја, контрола колачића и модалних прозора.[14]

Важан извор ЏејКвери додатака је поддомен додатака сајта ЏејКвери пројекта.[14] Додаци овог домена су случајно избрисани у децембру 2011. године у покушају да се сајт очисти од нежељеног садржаја..[15] Нови сајт ће садржати ГитХуб-хостовано (енгл. GitHub) складиште које ће од девелопера захтевати да поново додају своје додатке и да подлегну новим захтевима за додавање садржаја.[16] Постоје алтернативни погони за претрагу додатака[17][18] попут jquer.in који користе специјализован приступ, попут излиставања само додатака који испуњавају одређене критеријуме (нпр. Они који имају јавно складиште кодова). ЏејКвери нуди "Центар за обуку" који може помоћи корисницима да разумеју Јаваскрипт и почну да развијају ЏејКвери додатке.[19]

Историја[уреди | уреди извор]

ЏејКвери је оригинално објављен у Јануару 2006 у "Баркампу" (енгл. BarCamp) у Њујорку од стране Џон Ресига и био је под ранијим утицајем цссквери библиотеке Дина Едвардса. [20] Тренутно је одржавана од стране програмера који су предвођени Тимијем Вилсоном (са ЏејКвери машином за селектовање, Сизл, који води Ричард Гибсон )

ЏејКвери је имао интересантну историју лиценци.[21] Оригинално под CC BY-SA 2.5, био је релиценциран на МИТ лиценцу у 2006.[22] На крају 2006-те имао је двојно лиценциран под ГПЛ и МИТ лиценцом..[23] Како је ово доводило до забуне, у 2012 ФПЛ лиецнца је одбачена и данас је само под МИТ лиценцом.[24]

Од 2015. ЏејКвери остаје најшире коришћена Јаваскрипт библиотека на Веб-у Према сервису за аналитику Јаваскрипт библиотека, Либскор (енгл. Libscore), ЏејКвери се користи на преко 65% он првих милион најпопуларнијих сајтова према величини оствареног саобраћаја.[4] Познати сајтови који га користе укључују Твитер (енгл. Twitter), ЛинкедИн (енгл. LinkedIn), Пинтрест (енгл. Pinterest), и иБеј (енгл. eBay).[25]

Историја објављивања[уреди | уреди извор]

Број верзије Датум објављивања Последња верзија Величина продукта (KB) Додатне напомене
1.0 26. август 2006. (2006-08-26) Прва стабилна верзија
1.1 14. јануар 2007. (2007-01-14)
1.2 10. септембар 2007. (2007-09-10)
1.3 14. јануар 2009. (2009-01-14) 55.9 Селекторска машина Sizzle додата у језгро
1.4 14. јануар 2010. (2010-01-14)
1.5 31. јануар 2011. (2011-01-31) Управљање одложеним повратним позивима, предефинисан модул АЈАКС
1.6 3. мај 2011. (2011-05-03) Значајно побољшање перформанси attr() и val() функција
1.7 3. новембар 2011. (2011-11-03) Нови догађаји.on() и .off(), стари остају подржани.
1.8 9. август 2012. (2012-08-09) 91.4 Селекторска машина Sizzle преправљена, унапређене анимације и $(html, props) флексибилност.
1.9 15. јануар 2013. (2013-01-15) 1.9.1 [26] Уклањање застарелог интерфејса и чишћење кода
1.10 24. мај 2013. (2013-05-24) 1.10.2 (3. јул 2013. (2013-07-03)) Припојене исправке грешака и разлике пријављених из 1,9 и 2,0 бета циклуса
1.11 24. јануар 2014. (2014-01-24) 1.11.3 (28. април 2015. (2015-04-28)) 95.9
1.12 8. јануар 2016. (2016-01-08) 1.12.3 (5. април 2016. (2016-04-05)) 95
2.0 18. април 2013. (2013-04-18) 2.0.3 (3. јул 2013. (2013-07-03)) 81.1 Престанак подржавања IE 6–8 за побољшање перформанси и смањивање величине датотека
2.1 24. јануар 2014. (2014-01-24) 2.1.4 (28. април 2015. (2015-04-28)) 82.4
2.2 8. јануар 2016. (2016-01-08) 2.2.4 (20. мај 2016. (2016-05-20)) 85.6


Оквир за тестирање[уреди | уреди извор]

КјуЈунит (енгл. QUnit) је фрејмворк за аутоматизовано тестирање коришћен унутар ЏејКвери пројекта. ЏејКвери тим га је развио као библиоткеку за интегрисано тестирање јединица и користи се за тестирање кодова и додатака, али може тестирати генерички Јаваскрипт код, укључујучи код Јаваскрипта на серверској страни.[27]

Од 2011. године, ЏејКвери тим за тестирање користи КјуЈунит са ТестСварм (енгл. TestSwarm) оквиром да тестира сваку нову верзију ЏејКвери кода. [28]


Види још[уреди | уреди извор]

Референце[уреди | уреди извор]

  1. ^ „jQuery: The write less, do more, JavaScript library”. The jQuery Project. Приступљено 29. 4. 2010. 
  2. ^ „Usage of JavaScript libraries for websites”. Приступљено 14. 7. 2015. 
  3. ^ „jQuery Usage Statistics”. Архивирано из оригинала 25. 12. 2018. г. Приступљено 17. 5. 2013. 
  4. ^ а б 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. Приступљено 29. 1. 2009. 
  7. ^ Guthrie, Scott (28. 9. 2008). „jQuery and Microsoft”. ScottGu's Blog. Приступљено 29. 1. 2009. 
  8. ^ „Guarana UI: A jQuery Based UI Library for Nokia WRT”. Forum Nokia. Архивирано из оригинала 23. 11. 2009. г. Приступљено 30. 3. 2010. 
  9. ^ „jQuery”. MediaWiki. 19. 1. 2012. Приступљено 11. 3. 2012. 
  10. ^ Resig, John (14. 1. 2009). „jQuery 1.3 and the jQuery Foundation”. jQuery Blog. Приступљено 4. 5. 2009. 
  11. ^ CanIUse Browser Usage Table
  12. ^ Browser Support | jQuery
  13. ^ „jQuery.noConflict() jQuery API Documentation”. 
  14. ^ а б „Plugins”. The jQuery Project. Приступљено 26. 8. 2010. 
  15. ^ „What Is Happening To The jQuery Plugins Site?”. Приступљено 22. 4. 2015. 
  16. ^ „jquery/plugins.jquery.com”. GitHub. Приступљено 22. 4. 2015. 
  17. ^ „jQuery Plugins Search”. Архивирано из оригинала 15. 05. 2013. г. Приступљено 13. 9. 2012. 
  18. ^ Kanakiya, Jay. „jquery plugins”. 
  19. ^ „jQuery Learning Center”. jQuery Foundation. Приступљено 2. 7. 2014. 
  20. ^ York 2009, стр. 28.
  21. ^ jquery history Архивирано на сајту Wayback Machine (25. новембар 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”. Приступљено 22. 4. 2015. 
  27. ^ „History”. qunitjs.com. Приступљено 2. 7. 2014. 
  28. ^ jQuery Testing Team Wiki

Литература[уреди | уреди извор]

Додатна литература[уреди | уреди извор]

Спољашње везе[уреди | уреди извор]