
jQuery — JavaScriptová knihovna na světě. Společenství webových vývojářů ji vytvořilo na konci 2000. let, což vedlo k vzniku bohatého ekosystému webů, pluginů a frameworků, které jQuery využívají v pozadí.
Ale v posledních letech její status hlavního nástroje pro webový vývoj poklesl. Pojďme se podívat, proč se jQuery stalo populární a proč vyšlo z módy, a také v jakých situacích je stále smysluplné používat ji pro tvorbu moderních webových stránek.
Krátká historie jQuery
John Resig () vytvořil první verzi knihovny v roce 2005 a -m na akci zvané BarCampNYC. Na autor napsal:
jQuery je JavaScriptová knihovna, která vychází z motto: Programování v JavaScriptu by mělo být příjemné. jQuery se zaměřuje na časté, opakující se úkoly, odstraňuje veškeré zbytečné značkování a činí je krátkými, elegantními a srozumitelnými.
jQuery má dvě hlavní výhody. První je pohodlné API pro manipulaci s webovými stránkami. Zejména poskytuje silné metody pro výběr prvků. Můžete vybírat nejen podle ID nebo tříd; jQuery umožňuje psát složité výrazy, například pro vybírání prvků na základě jejich vztahů k jiným prvkům:
// Select every item within the list of people within the contacts element
$('#contacts ul.people li');Postupem času se mechanismus výběru přeměnil na samostatnou knihovnu .
Druhou výhodou knihovny bylo to, že abstrahovala rozdíly mezi prohlížeči. V těch letech bylo obtížné psát kód, který by spolehlivě fungoval ve všech prohlížečích.
Nedostatek standardizace znamenal, že vývojáři museli brát v úvahu četné rozdíly mezi prohlížeči a okrajové případy. Podívejte se na a hledejte jQuery.browser. Tady je jeden z příkladů:
// If Mozilla is used
if ( jQuery.browser == "mozilla" || jQuery.browser == "opera" ) {
// Use the handy event callback
jQuery.event.add( document, "DOMContentLoaded", jQuery.ready );
// If IE is used, use the excellent hack by Matthias Miller
// http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited
} else if ( jQuery.browser == "msie" ) {
// Only works if you document.write() it
document.write("<scr" + "ipt id=__ie_init defer=true " +
"src=javascript:void(0)></script>");
// Use the defer script hack
var script = document.getElementById("__ie_init");
script.onreadystatechange = function() {
if ( this.readyState == "complete" )
jQuery.ready();
};
// Clear from memory
script = null;
// If Safari is used
} else if ( jQuery.browser == "safari" ) {
// Continually check to see if the document.readyState is valid
jQuery.safariTimer = setInterval(function(){
// loaded and complete are both valid states
if ( document.readyState == "loaded" ||
document.readyState == "complete" ) {
// If either one are found, remove the timer
clearInterval( jQuery.safariTimer );
jQuery.safariTimer = null;
// and execute any waiting functions
jQuery.ready();
}
}, 10);
}A díky jQuery mohli vývojáři přesunout starosti o všechny tyto úskalí na bedra týmu vyvíjejícího knihovnu.
Později jQuery usnadnila implementaci složitějších technologií, jako jsou animace a Ajax. Knihovna se de facto stala standardní závislostí pro webové stránky. A dnes zajišťuje fungování obrovské části internetu. W3Techs uvádí, že .
Kontrola nad vývojem jQuery se také stala formálnější. V roce 2011 tým . A v roce 2012 jQuery Board.
V roce 2015 se jQuery Foundation sloučila s Dojo Foundation,, která se poté spojila s Node.js Foundation v-m za účelem vytvoření, v rámci které jQuery byla jedním z ".»
Měnící se okolnosti
Avšak v posledních letech jQuery . GitHub. Bootstrap v5 , protože to je jeho "" (v současnosti velikostí 30 kB, minifikováno a zabalené). Několik trendů ve webovém vývoji oslabilo postavení jQuery jako nezbytného nástroje.
Prohlížeče
Z několika důvodů se rozdíly a omezení prohlížečů staly méně důležitými. Za prvé, standardizace se zlepšila. Hlavní vývojáři prohlížečů (Apple, Google, Microsoft a Mozilla) společně vyvíjejí v rámci.
I když se prohlížeče stále liší v několika důležitých aspektech, mají dodavatelé alespoň prostředky na nalezení a vytvoření společného základu místo mezi sebou. V důsledku toho získala API prohlížečů nové možnosti. Například, může nahradit funkce Ajax z jQuery:
// jQuery
$.getJSON('https://api.com/songs.json')
.done(function (songs) {
console.log(songs);
})
// native
fetch('https://api.com/songs.json')
.then(function (response) {
return response.json();
})
.then(function (songs) {
console.log(songs);
});Metody a duplikují prostředky výběru z jQuery:
// jQuery
const fooDivs = $('.foo div');
// native
const fooDivs = document.querySelectorAll('.foo div');Manipulace s třídami prvků nyní může probíhat pomocí :
// jQuery
$('#warning').toggleClass('visible');
// native
document.querySelector('#warning').classList.toggle('visible');Na webu bylo uvedeno několik dalších situací, ve kterých může být kód jQuery nahrazen nativním kódem. Někteří vývojáři se vždy drží jQuery, protože jednoduše nevědí o nových API, ale když se dozvědí, začnou tuto knihovnu používat méně.
Použití nativních funkcí zvyšuje výkon stránek. Mnoho lze nyní realizovat pomocí CSS.
Druhý důvod spočívá v tom, že se prohlížeče aktualizují rychleji než dříve. Většina z nich používá , s výjimkou Apple Safari. Mohou se aktualizovat na pozadí bez účasti uživatele a nejsou vázány na aktualizace OS.
To znamená, že nové možnosti prohlížečů a opravy chyb se šíří mnohem rychleji a vývojáři nemusí čekat, až se podíl dosáhne přijatelných úrovní. Mohou sebejistě využívat nové funkce a API bez načítání jQuery nebo polyfillů.
Třetí důvod spočívá v tom, že Internet Explorer se blíží k úplné zastaralosti. IE už dlouho představuje problém pro webový vývoj po celém světě. Charakteristické chyby byly široce rozšířené, a protože IE dominoval v 2000. letech a nepoužíval «věčně zelenou» strategii aktualizace, dodnes se často setkáváme s jeho starými verzemi.
V roce 2016 Microsoft urychlil odstranění IE z provozu, desátou a starší verze, omezil se na podporu IE 11. A čím dál častěji si weboví vývojáři mohou dovolit luxus ignorovat kompatibilitu s IE.
Dokonce i jQuery přestal podporovat IE 8 a nižší od , která vyšla v roce 2013. Ačkoli v některých případech je stále třeba podporovat IE, například na starých stránkách, tyto situace nastávají čím dál méně.
Nové frameworky
Od doby, kdy byl jQuery uveden, bylo vytvořeno mnoho frameworků, včetně moderních lídrů , a . Mají dvě důležitá výhody oproti jQuery.
Za prvé, umožňují snadno rozdělit uživatelské rozhraní na komponenty. Frameworky jsou navrženy tak, aby zpracovávaly vykreslování a aktualizaci stránky. A jQuery se obvykle používá pouze k aktualizaci, zatímco server zajišťuje dodání počáteční stránky.
Na druhou stranu, komponenty React, Angular a Vue umožňují úzké propojení HTML, kódu a dokonce i CSS. Stejně jako dělíme kódovou základnu na mnoho soběstačných funkcí a tříd, možnost rozdělit rozhraní na znovu použitelné komponenty usnadňuje sestavování a údržbu složitých webů.
Druhou výhodou je, že novější frameworky dodržují deklarativní paradigmu, v rámci které vývojář popisuje, jak by mělo rozhraní vypadat, a provedení všech nezbytných změn pro dosažení požadovaného přenáší na framework. Tento přístup je v rozporu s imperativním přístupem charakteristickým pro kód jQuery.
V jQuery výslovně uvádíte kroky k provedení jakýchkoli změn. A v deklarativním frameworku říkáte: «Dle těchto dat by mělo rozhraní vypadat takto». To může výrazně usnadnit psaní kódu bez chyb.
Vývojáři přijali nové přístupy k vývoji webových stránek, což vedlo ke snížení oblíbenosti jQuery.
Kdy použít jQuery?
Tak kdy tedy by mělo být použito jQuery?
Pokud se složitost projektu bude zvyšovat, je lepší začít s jinou knihovnou nebo frameworkem, který umožňuje smysluplně řídit složitost. Například oddělit uživatelské rozhraní na komponenty. Použití jQuery na takových stránkách v počátečních fázích může vypadat přijatelné, ale rychle to povede k vzniku špagetového kódu, kdy si nebudete jisti, který fragment ovlivňuje kterou část stránky.
Byl jsem v takové situaci, kdy při pokusu provést jakoukoli změnu vznikal pocit těžkého úkolu. Není možné si být jistý, že nic nezhodíte, protože selektory jQuery závisí na HTML struktuře vytvářené serverem.
Na druhém konci spektra jsou jednoduché weby, které vyžadují pouze trochu interaktivity nebo dynamického obsahu. V takových případech bych také nezapnul jQuery jako výchozí volbu, protože pomocí nativních API lze udělat mnohem více.
I když budu potřebovat něco mocnějšího, budu hledat specializovanou knihovnu, například pro Ajax nebo pro animace. Bude to jednodušší, než načítat celé jQuery kvůli malé funkčnosti.
Myslím, že nejlepší odůvodnění pro použití jQuery je to, že poskytuje komplexní funkcionalitu pro práci s frontendem webu. Místo toho, abyste studovali různá nativní API nebo specializované knihovny, můžete si přečíst pouze dokumentaci jQuery a okamžitě se stát produktivními.
Imperativní přístup se špatně škáluje, ale je jednodušší se ho naučit než deklarativní přístupy jiných knihoven. Pro web s jasně omezenými možnostmi je lepší použít jQuery a bez obav pracovat: knihovna nevyžaduje složité sestavení nebo kompilaci.
Kromě toho je jQuery dobré pro případy, kdy si jste jisti, že web se v průběhu času nezkomplikuje, a pokud vás netrápí nativní funkčnost, která bezpochyby vyžaduje více kódu než jQuery.
Tuto knihovnu můžete také používat, pokud potřebujete podporu starších verzí IE. V takovém případě vám jQuery poslouží jako v době, kdy byl IE nejpopulárnějším prohlížečem.
Pohled do budoucnosti
jQuery ještě dlouho nezmizí. Ona , a mnozí vývojáři dávají přednost používání jejího API, i když jsou k dispozici nativní metody. Knihovna pomohla celému generaci vývojářů vytvářet webové stránky, které fungují na jakýchkoli prohlížečích. A i když ji v mnoha ohledech nahradily nové knihovny, rámce a paradigmy, jQuery sehrála obrovskou pozitivní roli při utváření moderního webu.
Pokud se funkčnost jQuery podstatně nezmění, je velmi pravděpodobné, že v následujících několika letech bude používání knihovny i nadále pomalu, ale jistě klesat. Nové webové stránky se obvykle od začátku vytvářejí pomocí modernějších rámců a vhodné scénáře pro použití jQuery se objevují čím dál méně.
Někomu se nelíbí intenzita zastarávání nástrojů pro webový vývoj, ale pro mě je to důkaz rychlého pokroku. jQuery nám umožnila dosáhnout mnoha věcí lépe. To platí i pro její nástupce.
Zdroj: habr.com
