{"id":38523,"date":"2019-10-31T22:24:17","date_gmt":"2019-10-31T19:24:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/istoriya-i-nasledie-jquery\/"},"modified":"2019-10-31T22:24:17","modified_gmt":"2019-10-31T19:24:17","slug":"istoriya-i-nasledie-jquery","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/istoriya-i-nasledie-jquery","title":{"rendered":"Historia i dziedzictwo jQuery","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Historia i dziedzictwo jQuery\" src=\"\/wp-content\/uploads\/2019\/10\/beb7b33761181e6b478031cf1b85e6c6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\njQuery \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/trends.builtwith.com\/javascript\/jQuery\">to najpopularniejsza<\/a><\/noindex> biblioteka JavaScript na \u015bwiecie. Spo\u0142eczno\u015b\u0107 web developer\u00f3w stworzy\u0142a j\u0105 pod koniec lat 2000, co doprowadzi\u0142o do powstania bogatego ekosystemu stron, wtyczek i framework\u00f3w wykorzystuj\u0105cych jQuery.<\/p>\n<p>Jednak w ostatnich latach jej status g\u0142\u00f3wnego narz\u0119dzia do tworzenia stron internetowych os\u0142ab\u0142. Przyjrzyjmy si\u0119, dlaczego jQuery sta\u0142a si\u0119 popularna i dlaczego wysz\u0142a z mody, a tak\u017ce w jakich przypadkach nadal warto jej u\u017cywa\u0107 do tworzenia nowoczesnych witryn.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Kr\u00f3tka historia jQuery<\/h2>\n<p>\nJohn Resig (<noindex><a rel=\"nofollow\" href=\"https:\/\/johnresig.com\/\">John Resig<\/a><\/noindex>) stworzy\u0142 pierwsz\u0105 wersj\u0119 biblioteki w 2005 roku, a <noindex><a rel=\"nofollow\" href=\"https:\/\/johnresig.com\/blog\/barcampnyc-wrap-up\/\">opublikowa\u0142 j\u0105 w 2006<\/a><\/noindex>-m, na wydarzeniu nazwanym BarCampNYC. Na <noindex><a rel=\"nofollow\" href=\"https:\/\/web.archive.org\/web\/20060203025710\/http:\/\/jquery.com\/\">oficjalnej stronie jQuery<\/a><\/noindex> autor napisa\u0142:<\/p>\n<blockquote><p>jQuery \u2014 to biblioteka JavaScript, kt\u00f3rej motto brzmi: Programowanie w JavaScript powinno by\u0107 przyjemne. jQuery zajmuje si\u0119 cz\u0119stymi, powtarzaj\u0105cymi si\u0119 zadaniami, usuwa wszelkie niepotrzebne znaczki i czyni je kr\u00f3tkimi, eleganckimi i zrozumia\u0142ymi.<\/p><\/blockquote>\n<p>\njQuery ma dwie g\u0142\u00f3wne zalety. Pierwsza \u2014 to wygodne API do manipulowania stronami internetowymi. W szczeg\u00f3lno\u015bci oferuje pot\u0119\u017cne metody do wyboru element\u00f3w. Mo\u017cna wybiera\u0107 nie tylko po ID lub klasach, jQuery pozwala pisa\u0107 skomplikowane wyra\u017cenia, na przyk\u0142ad, aby wybiera\u0107 elementy na podstawie ich powi\u0105za\u0144 z innymi elementami:<\/p>\n<pre><code class=\"javascript\">\/\/ Select every item within the list of people within the contacts element\n$('#contacts ul.people li');<\/code><\/pre>\n<p>\nZ biegiem czasu mechanizm wyboru przekszta\u0142ci\u0142 si\u0119 w osobn\u0105 bibliotek\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/sizzlejs.com\/\">Sizzle<\/a><\/noindex>.<\/p>\n<p>Drug\u0105 zalet\u0105 biblioteki jest to, \u017ce zniekszta\u0142ca r\u00f3\u017cnice mi\u0119dzy przegl\u0105darkami. W tamtych czasach by\u0142o trudno pisa\u0107 kod, kt\u00f3ry m\u00f3g\u0142by wiarygodnie dzia\u0142a\u0107 we wszystkich przegl\u0105darkach. <\/p>\n<p>Brak standaryzacji oznacza\u0142, \u017ce programi\u015bci musieli bra\u0107 pod uwag\u0119 liczne r\u00f3\u017cnice mi\u0119dzy przegl\u0105darkami i szczeg\u00f3lne przypadki. Sp\u00f3jrz na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/daniellmb\/jquery-archive\/blob\/master\/jquery.2006-07-01.js\">ten wczesny kod \u017ar\u00f3d\u0142owy jQuery<\/a><\/noindex> i poszukaj w jQuery.browser. Oto jeden z przyk\u0142ad\u00f3w:<\/p>\n<pre><code class=\"javascript\">\/\/ If Mozilla is used\nif ( jQuery.browser == \"mozilla\" || jQuery.browser == \"opera\" ) {\n        \/\/ Use the handy event callback\n        jQuery.event.add( document, \"DOMContentLoaded\", jQuery.ready );\n\n\/\/ If IE is used, use the excellent hack by Matthias Miller\n\/\/ http:\/\/www.outofhanwell.com\/blog\/index.php?title=the_window_onload_problem_revisited\n} else if ( jQuery.browser == \"msie\" ) {\n\n        \/\/ Only works if you document.write() it\n        document.write(\"&lt;scr\" + \"ipt id=__ie_init defer=true \" + \n                \"src=javascript:void(0)&gt;&lt;\/script&gt;\");\n\n        \/\/ Use the defer script hack\n        var script = document.getElementById(\"__ie_init\");\n        script.onreadystatechange = function() {\n                if ( this.readyState == \"complete\" )\n                        jQuery.ready();\n        };\n\n        \/\/ Clear from memory\n        script = null;\n\n\/\/ If Safari  is used\n} else if ( jQuery.browser == \"safari\" ) {\n        \/\/ Continually check to see if the document.readyState is valid\n        jQuery.safariTimer = setInterval(function(){\n                \/\/ loaded and complete are both valid states\n                if ( document.readyState == \"loaded\" || \n                        document.readyState == \"complete\" ) {\n\n                        \/\/ If either one are found, remove the timer\n                        clearInterval( jQuery.safariTimer );\n                        jQuery.safariTimer = null;\n\n                        \/\/ and execute any waiting functions\n                        jQuery.ready();\n                }\n        }, 10);\n}<\/code><\/pre>\n<p>\nA dzi\u0119ki jQuery programi\u015bci mogli zdj\u0105\u0107 z siebie troski o wszystkie te pu\u0142apki, przekazuj\u0105c je zespo\u0142owi rozwijaj\u0105cemu bibliotek\u0119.<\/p>\n<p>P\u00f3\u017aniej jQuery u\u0142atwi\u0142a wdro\u017cenie bardziej z\u0142o\u017conych technologii, takich jak animacje i Ajax. Biblioteka sta\u0142a si\u0119 w rzeczywisto\u015bci standardowym zale\u017cno\u015bci\u0105 dla stron internetowych. I dzisiaj obs\u0142uguje ogromn\u0105 cz\u0119\u015b\u0107 internetu. W3Techs uwa\u017ca, \u017ce <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/details\/js-jquery\/all\/all\">74% stron internetowych dzi\u015b u\u017cywa jQuery<\/a><\/noindex>.<\/p>\n<p>Kontrola rozwoju jQuery sta\u0142a si\u0119 r\u00f3wnie\u017c bardziej sformalizowana. W 2011 roku zesp\u00f3\u0142 <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.jquery.com\/2011\/11\/18\/getting-board-of-jquery\/\">stworzy\u0142 jQuery Board<\/a><\/noindex>. A w 2012 roku jQuery Board<noindex><a rel=\"nofollow\" href=\"https:\/\/blog.jquery.com\/2012\/03\/06\/announcing-the-jquery-foundation\/\"> przekszta\u0142ci\u0142a si\u0119 w jQuery Foundation<\/a><\/noindex>.<\/p>\n<p>W 2015 roku fundacja jQuery po\u0142\u0105czy\u0142a si\u0119 z fundacj\u0105 Dojo,<noindex><a rel=\"nofollow\" href=\"https:\/\/blog.jquery.com\/2015\/09\/01\/jquery-foundation-and-dojo-foundation-to-merge\/\"> aby stworzy\u0107 fundacj\u0119 JS<\/a><\/noindex>, kt\u00f3ra nast\u0119pnie zjednoczy\u0142a si\u0119 z fundacj\u0105 Node.js w<noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@nodejs\/introducing-the-openjs-foundation-the-next-phase-of-javascript-ecosystem-growth-d4911b42664f\"> 2019<\/a><\/noindex>-m w celu utworzenia<noindex><a rel=\"nofollow\" href=\"https:\/\/openjsf.org\/\"> OpenJS Foundation<\/a><\/noindex>, w ramach kt\u00f3rej jQuery by\u0142a jednym z \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/openjsf.org\/projects\/#impact\">prze\u0142omowych projekt\u00f3w<\/a><\/noindex>.\u201e<\/p>\n<h2>Zmieniaj\u0105ce si\u0119 okoliczno\u015bci<\/h2>\n<p>\nJednak w ostatnich latach jQuery <noindex><a rel=\"nofollow\" href=\"https:\/\/trends.google.com\/trends\/explore\/TIMESERIES\/1564319400?hl=en-US&amp;tz=240&amp;date=all&amp;geo=US&amp;q=jquery&amp;sni=3\">straci\u0142a na popularno\u015bci<\/a><\/noindex>. GitHub<noindex><a rel=\"nofollow\" href=\"https:\/\/github.blog\/2018-09-06-removing-jquery-from-github-frontend\/\"> usun\u0105\u0142 bibliotek\u0119 z front-endu swojej strony<\/a><\/noindex>. Bootstrap v5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/twbs\/bootstrap\/pull\/23586\">pozb\u0119dzie si\u0119 jQuery<\/a><\/noindex>, poniewa\u017c jest to jego \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/blog.getbootstrap.com\/2019\/02\/11\/bootstrap-4-3-0\/\">najwi\u0119ksza zale\u017cno\u015b\u0107 kliencka dla standardowego JavaScript<\/a><\/noindex>\u201d (obecnie maj\u0105ca rozmiar 30 KB, zminimalizowana i spakowana). Kilka trend\u00f3w w tworzeniu stron os\u0142abi\u0142o pozycj\u0119 jQuery jako niezb\u0119dnego narz\u0119dzia.<\/p>\n<h3>Przegl\u0105darki<\/h3>\n<p>\nZ r\u00f3\u017cnych powod\u00f3w r\u00f3\u017cnice i ograniczenia przegl\u0105darek sta\u0142y si\u0119 mniej istotne. Po pierwsze, poprawi\u0142a si\u0119 standaryzacja. G\u0142\u00f3wni tw\u00f3rcy przegl\u0105darek (Apple, Google, Microsoft i Mozilla) wsp\u00f3lnie opracowuj\u0105<noindex><a rel=\"nofollow\" href=\"https:\/\/spec.whatwg.org\/\"> standardy webowe<\/a><\/noindex> w ramach<noindex><a rel=\"nofollow\" href=\"https:\/\/whatwg.org\/\"> Web Hypertext Application Technology Working Group<\/a><\/noindex>.<br \/>\nChocia\u017c przegl\u0105darki nadal r\u00f3\u017cni\u0105 si\u0119 od siebie w kilku istotnych kwestiach, dostawcy maj\u0105 przynajmniej narz\u0119dzie do poszukiwania i tworzenia wsp\u00f3lnej bazy zamiast <noindex><a rel=\"nofollow\" href=\"https:\/\/thehistoryoftheweb.com\/browser-wars\/\">permanentnej wojny<\/a><\/noindex> ze sob\u0105. W zwi\u0105zku z tym API przegl\u0105darek zyska\u0142y nowe mo\u017cliwo\u015bci. Na przyk\u0142ad, <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Fetch_API\">Fetch API<\/a><\/noindex> mo\u017ce zast\u0105pi\u0107 funkcje Ajax z jQuery:<\/p>\n<pre><code class=\"javascript\">\/\/ jQuery\n$.getJSON('https:\/\/api.com\/songs.json')\n    .done(function (songs) {\n        console.log(songs);\n    })\n\n\/\/ native\nfetch('https:\/\/api.com\/songs.json')\n    .then(function (response) {\n        return response.json();\n    })\n    .then(function (songs) {\n        console.log(songs);\n    });<\/code><\/pre>\n<p>\nMetody <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Document\/querySelector\">querySelector<\/a><\/noindex> i<noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Document\/querySelectorAll\"> querySelectorAll<\/a><\/noindex> powielaj\u0105 metody wyboru z jQuery:<\/p>\n<pre><code class=\"javascript\">\/\/ jQuery\nconst fooDivs = $('.foo div');\n\n\/\/ native\nconst fooDivs = document.querySelectorAll('.foo div');<\/code><\/pre>\n<p>\nManipulowanie klasami element\u00f3w jest teraz mo\u017cliwe za pomoc\u0105 <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Element\/classList\">classList<\/a><\/noindex>:<\/p>\n<pre><code class=\"javascript\">\/\/ jQuery\n$('#warning').toggleClass('visible');\n\n\/\/ native\ndocument.querySelector('#warning').classList.toggle('visible');<\/code><\/pre>\n<p>\nNa stronie<noindex><a rel=\"nofollow\" href=\"http:\/\/youmightnotneedjquery.com\/\"> You Might Not Need jQuery<\/a><\/noindex> wymieniono kilka innych sytuacji, w kt\u00f3rych kod jQuery mo\u017cna zast\u0105pi\u0107 natywnym kodem. Niekt\u00f3rzy deweloperzy wci\u0105\u017c trzymaj\u0105 si\u0119 jQuery, poniewa\u017c po prostu nie znaj\u0105 nowych API, ale kiedy si\u0119 dowiaduj\u0105, zaczynaj\u0105 rzadziej u\u017cywa\u0107 tej biblioteki.<\/p>\n<p>Wykorzystanie natywnych mo\u017cliwo\u015bci pozwala zwi\u0119kszy\u0107 wydajno\u015b\u0107 stron. Wiele <noindex><a rel=\"nofollow\" href=\"https:\/\/api.jquery.com\/category\/effects\/\">efekt\u00f3w animacji z jQuery<\/a><\/noindex> mo\u017cna teraz zrealizowa\u0107<noindex><a rel=\"nofollow\" href=\"https:\/\/dev.opera.com\/articles\/css3-vs-jquery-animations\/\"> znacznie efektywniej<\/a><\/noindex> za pomoc\u0105 CSS.<\/p>\n<p>Drugim powodem jest to, \u017ce przegl\u0105darki s\u0105 aktualizowane znacznie szybciej ni\u017c kiedy\u015b. Wi\u0119kszo\u015b\u0107 z nich stosuje <noindex><a rel=\"nofollow\" href=\"https:\/\/www.techopedia.com\/definition\/31094\/evergreen-browser\">strategi\u0119 \u201ewiecznie zielon\u0105\u201d aktualizacji<\/a><\/noindex>, z wyj\u0105tkiem Apple Safari. Mog\u0105 by\u0107 aktualizowane w tle bez udzia\u0142u u\u017cytkownika i nie s\u0105 zwi\u0105zane z aktualizacjami systemu operacyjnego.<\/p>\n<p>Oznacza to, \u017ce nowe mo\u017cliwo\u015bci przegl\u0105darek i poprawki b\u0142\u0119d\u00f3w rozprzestrzeniaj\u0105 si\u0119 znacznie szybciej i deweloperzy nie musz\u0105 czeka\u0107, a\u017c udzia\u0142 <noindex><a rel=\"nofollow\" href=\"https:\/\/caniuse.com\/\">Can I Use<\/a><\/noindex> osi\u0105gnie akceptowalny poziom. Mog\u0105 pewnie korzysta\u0107 z nowych funkcji i API bez \u0142adowania jQuery czy polifil\u00f3w.<\/p>\n<p>Trzecia przyczyna polega na tym, \u017ce Internet Explorer zbli\u017ca si\u0119 do stanu ca\u0142kowitego nieaktualno\u015bci. IE od dawna jest zmor\u0105 dla web developer\u00f3w na ca\u0142ym \u015bwiecie. Typowe dla niego b\u0142\u0119dy by\u0142y szeroko rozpowszechnione, a poniewa\u017c IE dominowa\u0142 w latach 2000, nie wprowadzaj\u0105c \u201ewiecznie zielonej\u201d strategii aktualizacji, cz\u0119sto spotyka si\u0119 jego stare wersje.<\/p>\n<p>W 2016 roku Microsoft przyspieszy\u0142 wycofywanie IE z eksploatacji, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/microsoft-365\/windows\/end-of-ie-support\">zaprzestaj\u0105c wsparcia<\/a><\/noindex> dziesi\u0105tej i wcze\u015bniejszych wersji, ograniczaj\u0105c wsparcie do IE 11. Coraz cz\u0119\u015bciej web deweloperzy mog\u0105 sobie pozwoli\u0107 na luksus ignorowania kompatybilno\u015bci z IE.<\/p>\n<p>Nawet jQuery przesta\u0142 wspiera\u0107 IE 8 i ni\u017csze wersje od <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.jquery.com\/2013\/04\/18\/jquery-2-0-released\/\">wersji 2.0<\/a><\/noindex>, kt\u00f3ra pojawi\u0142a si\u0119 w 2013 roku. I chocia\u017c w niekt\u00f3rych przypadkach nadal wymagana jest pomoc dla IE, przyk\u0142adowo na starych stronach, sytuacje te zdarzaj\u0105 si\u0119 coraz rzadziej.<\/p>\n<h3>Nowe frameworki<\/h3>\n<p>\nOd pojawienia si\u0119 jQuery stworzono wiele framework\u00f3w, w tym nowoczesnych lider\u00f3w <noindex><a rel=\"nofollow\" href=\"https:\/\/reactjs.org\/\">React<\/a><\/noindex>,<noindex><a rel=\"nofollow\" href=\"https:\/\/angular.io\/\"> Angular<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/vuejs.org\/\">Vue<\/a><\/noindex>. Maj\u0105 dwa wa\u017cne atuty w por\u00f3wnaniu do jQuery.<\/p>\n<p>Po pierwsze, umo\u017cliwiaj\u0105 \u0142atwe dzielenie interfejsu u\u017cytkownika na komponenty. Frameworki zaprojektowane s\u0105 tak, aby zaj\u0105\u0107 si\u0119 renderowaniem i aktualizacj\u0105 strony. Natomiast jQuery zazwyczaj u\u017cywane jest tylko do aktualizacji, pozostawiaj\u0105c serwerowi zadanie dostarczenia pocz\u0105tkowej strony.<\/p>\n<p>Z drugiej strony, komponenty React, Angular i Vue pozwalaj\u0105 silnie powi\u0105za\u0107 HTML, kod, a nawet CSS. Gdy dzielimy baz\u0119 kodu na wiele autonomicznych funkcji i klas, mo\u017cliwo\u015b\u0107 podzia\u0142u interfejsu na wielokrotnego u\u017cytku komponenty u\u0142atwia budow\u0119 i utrzymanie z\u0142o\u017conych stron.<\/p>\n<p>Drugim atutem jest to, \u017ce nowsze frameworki stosuj\u0105 paradygmat deklaratywny, w kt\u00f3rym programista opisuje, jak powinien wygl\u0105da\u0107 interfejs, a wszystkie niezb\u0119dne zmiany dla osi\u0105gni\u0119cia zamierzonego efektu zleca frameworkowi. To podej\u015bcie kontrastuje z imperatywnym podej\u015bciem typowym dla kodu jQuery.<\/p>\n<p>W jQuery wyra\u017anie okre\u015blasz kroki do wprowadzenia jakichkolwiek zmian. A w deklaratywnym frameworku m\u00f3wisz: \u201eNa podstawie tych danych, interfejs powinien wygl\u0105da\u0107 tak\u201d. To mo\u017ce znacznie u\u0142atwi\u0107 pisanie kodu bez b\u0142\u0119d\u00f3w.<\/p>\n<p>Programi\u015bci przyj\u0119li nowe podej\u015bcia do tworzenia stron internetowych, przez co popularno\u015b\u0107 jQuery spad\u0142a.<\/p>\n<h2>Kiedy u\u017cywa\u0107 jQuery?<\/h2>\n<p>\nA zatem kiedy <i>nale\u017cy <\/i>u\u017cywa\u0107 jQuery?<\/p>\n<p>Je\u015bli z\u0142o\u017cono\u015b\u0107 projektu b\u0119dzie ros\u0142a, to lepiej zacz\u0105\u0107 z inn\u0105 bibliotek\u0105 lub frameworkiem, kt\u00f3ry umo\u017cliwia sensowne zarz\u0105dzanie z\u0142o\u017cono\u015bci\u0105. Na przyk\u0142ad, dzielenie interfejsu na komponenty. U\u017cycie jQuery w takich stronach na pocz\u0105tku mo\u017ce wydawa\u0107 si\u0119 akceptowalne, ale szybko doprowadzi to do powstania spaghetti kodu, gdy nie b\u0119dziesz pewny, kt\u00f3ry fragment wp\u0142ywa na kt\u00f3r\u0105 cz\u0119\u015b\u0107 strony.<\/p>\n<p>By\u0142em w takiej sytuacji, gdy przy pr\u00f3bie wprowadzenia jakiejkolwiek zmiany pojawia si\u0119 uczucie trudnego zadania. Nie mo\u017cna by\u0107 pewnym, \u017ce niczego si\u0119 nie zepsuje, poniewa\u017c selektory jQuery zale\u017c\u0105 od struktury HTML stworzonej przez serwer.<\/p>\n<p>Na ko\u0144cu skali znajduj\u0105 si\u0119 proste strony, kt\u00f3re wymagaj\u0105 jedynie odrobiny interaktywno\u015bci lub tre\u015bci dynamicznych. W takich przypadkach te\u017c nie u\u017cywa\u0142bym jQuery domy\u015blnie, poniewa\u017c z natywnymi API mo\u017cna zrobi\u0107 znacznie wi\u0119cej.<\/p>\n<p>Nawet je\u015bli b\u0119d\u0119 potrzebowa\u0142 czego\u015b bardziej zaawansowanego, poszukam specjalistycznej biblioteki, na przyk\u0142ad, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/axios\/axios\">axios<\/a><\/noindex> do Ajax lub<noindex><a rel=\"nofollow\" href=\"https:\/\/daneden.github.io\/animate.css\/\"> Animate.css<\/a><\/noindex> do animacji. To b\u0119dzie prostsze ni\u017c \u0142adowanie ca\u0142ego jQuery dla niewielkiej funkcjonalno\u015bci.<\/p>\n<p>My\u015bl\u0119, \u017ce najlepszym uzasadnieniem u\u017cywania jQuery jest to, \u017ce oferuje kompleksow\u0105 funkcjonalno\u015b\u0107 do pracy z frontendem strony. Zamiast uczy\u0107 si\u0119 r\u00f3\u017cnych natywnych API lub specjalistycznych bibliotek, mo\u017cesz po prostu przeczyta\u0107 dokumentacj\u0119 jQuery, a od razu staniesz si\u0119 produktywny.<\/p>\n<p>Podej\u015bcie imperatywne \u017ale si\u0119 skaluje, ale \u0142atwiej je opanowa\u0107 ni\u017c deklaratywne podej\u015bcie innych bibliotek. Dla strony o wyra\u017anie ograniczonych mo\u017cliwo\u015bciach lepiej zastosowa\u0107 jQuery i spokojnie pracowa\u0107: biblioteka nie wymaga skomplikowanego \u0142adowania lub kompilacji.<\/p>\n<p>Ponadto, jQuery sprawdza si\u0119 w przypadkach, gdy jeste\u015b pewien, \u017ce strona nie b\u0119dzie z czasem si\u0119 skomplikowa\u0107, i je\u015bli nie interesuje ci\u0119 natywna funkcjonalno\u015b\u0107, kt\u00f3ra na pewno wymaga napisania wi\u0119cej kodu ni\u017c jQuery.<\/p>\n<p>Mo\u017cesz r\u00f3wnie\u017c korzysta\u0107 z tej biblioteki, je\u015bli musisz wspiera\u0107 stare wersje IE. Wtedy jQuery b\u0119dzie dla ciebie przydatne, jak w czasach, gdy IE by\u0142 najpopularniejsz\u0105 przegl\u0105dark\u0105.<\/p>\n<h2>Spojrzenie w przysz\u0142o\u015b\u0107<\/h2>\n<p>\njQuery nie zniknie jeszcze przez jaki\u015b czas. Ona <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jquery\/jquery\">aktywnie si\u0119 rozwija<\/a><\/noindex>, a wielu programist\u00f3w woli korzysta\u0107 z jej API, nawet przy dost\u0119pno\u015bci metod natywnych. Biblioteka pomog\u0142a ca\u0142emu pokoleniu programist\u00f3w tworzy\u0107 strony internetowe dzia\u0142aj\u0105ce w ka\u017cdej przegl\u0105darki. I chocia\u017c w wielu aspektach zosta\u0142y zast\u0105pione przez nowe biblioteki, frameworki i paradygmy, jQuery odegra\u0142a ogromn\u0105 pozytywn\u0105 rol\u0119 w tworzeniu nowoczesnego webu.<\/p>\n<p>Je\u015bli funkcjonalno\u015b\u0107 jQuery nie ulegnie znacznym zmianom, to ca\u0142kiem mo\u017cliwe, \u017ce w najbli\u017cszych latach korzystanie z tej biblioteki b\u0119dzie powoli, ale nieuchronnie mala\u0142o. Nowe strony internetowe zazwyczaj s\u0105 tworzone od samego pocz\u0105tku z u\u017cyciem nowocze\u015bniejszych framework\u00f3w, a odpowiednie przypadki u\u017cycia jQuery zdarzaj\u0105 si\u0119 coraz rzadziej.<\/p>\n<p>Niekt\u00f3rzy nie lubi\u0105 intensywno\u015bci dezaktualizacji narz\u0119dzi do tworzenia stron internetowych, ale dla mnie to dow\u00f3d na szybki post\u0119p. jQuery pozwoli\u0142a nam robi\u0107 wiele rzeczy lepiej. To samo dotyczy jej nast\u0119pc\u00f3w.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/468169\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>jQuery \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0432 \u043c\u0438\u0440\u0435 JavaScript-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430. \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u043b\u043e \u0435\u0451 \u0432 \u043a\u043e\u043d\u0446\u0435 2000-\u0445, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044e \u0431\u043e\u0433\u0430\u0442\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0430\u0439\u0442\u043e\u0432, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c jQuery. \u041d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0435\u0451 \u0441\u0442\u0430\u0442\u0443\u0441 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0448\u0430\u0442\u043d\u0443\u043b\u0441\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 jQuery \u0441\u0442\u0430\u043b\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0430 \u0432\u044b\u0448\u043b\u0430 \u0438\u0437 \u043c\u043e\u0434\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28907,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-38523","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"jQuery \u2014\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/news\/istoriya-i-nasledie-jquery\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u0438\u0435 jQuery | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"jQuery \u2014\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/istoriya-i-nasledie-jquery\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:24:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:24:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Historia i dziedzictwo jQuery | ProHoster","description":"jQuery \u2014","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/istoriya-i-nasledie-jquery","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u0438\u0435 jQuery | ProHoster","og:description":"jQuery \u2014","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/istoriya-i-nasledie-jquery","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:24:17+00:00","article:modified_time":"2019-10-31T19:24:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38523","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 22:22:33","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:07:40","updated":"2026-01-23 22:22:33","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/38523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=38523"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/38523\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/28907"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=38523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=38523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=38523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}