Historie a dědictví jQuery

Historie a dědictví jQuery
jQuery - toto je nejoblíbenější na světě JavaScriptová knihovna. Komunita webových vývojářů jej vytvořila na konci roku 2000, což vedlo k bohatému ekosystému webů, pluginů a rámců využívajících jQuery pod kapotou.

Ale v posledních letech se jeho status předního nástroje pro vývoj webu narušil. Podívejme se, proč se jQuery stal populárním a proč vyšel z módy a také v jakých případech je stále vhodné jej používat k tvorbě moderních webových stránek.

Stručná historie jQuery

John Resig (John Resig) vytvořil první verzi knihovny v roce 2005 a zveřejněno v roce 2006-m, na akci s názvem BarCampNYC. Na oficiální stránky jQuery autor napsal:

jQuery je Javascriptová knihovna založená na mottu: Kódování Javascriptu by mělo být zábavné. jQuery přebírá běžné, opakující se úkoly, odstraňuje všechny zbytečné značky a dělá je krátkými, elegantními a čistými.

jQuery má dvě hlavní výhody. První je pohodlné API pro manipulaci s webovými stránkami. Zejména poskytuje výkonné metody pro výběr prvků. Nejen, že můžete vybírat podle ID nebo třídy, jQuery vám umožňuje psát složité výrazy, například pro výběr prvků na základě jejich vztahů s jinými prvky:

// Select every item within the list of people within the contacts element
$('#contacts ul.people li');

Postupem času se z mechanismu výběru stala samostatná knihovna Prskání.

Druhou výhodou knihovny bylo, že abstrahovala rozdíly mezi prohlížeči. V těch letech bylo těžké napsat kód, který by mohl spolehlivě fungovat ve všech prohlížečích.

Nedostatek standardizace znamenal, že vývojáři museli počítat s četnými rozdíly mezi prohlížeči a okrajovými případy. Podívejte se na tento raný zdrojový kód jQuery a vyhledejte jQuery.browser. Zde je jeden 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 se všemi těmito nástrahami na bedra týmu vyvíjejícího knihovnu.

Později jQuery usnadnil implementaci složitějších technologií, jako jsou animace a Ajax. Knihovna se prakticky stala standardní závislostí webových stránek. A dnes pohání obrovskou část internetu. W3Techs tomu věří 74 % webů dnes používá jQuery.

Kontrola nad vývojem jQuery se také více formalizovala. V roce 2011 tým vytvořil jQuery Board. A v roce 2012 jQuery Board transformována na jQuery Foundation.

V roce 2015 se nadace jQuery sloučila s nadací Dojo, vytvořit JS Foundation, která se poté sloučila s Node.js Foundation do 2019-m vytvořit Nadace OpenJS, v rámci kterého byl jQuery jedním z „průlomové projekty. »

Měnící se okolnosti

Nicméně v posledních letech jQuery ztratil na popularitě. GitHub odstranil knihovnu z frontendu mého webu. Bootstrap v5 zbavit se jQueryprotože je to jeho"největší klientská závislost pro běžný JavaScript"(aktuálně o velikosti 30 kB, minifikované a zabalené). Několik trendů ve vývoji webu oslabilo pozici jQuery jako základního nástroje.

Prohlížeče

Z mnoha důvodů jsou rozdíly a omezení v prohlížečích méně důležité. Za prvé se zlepšila standardizace. Hlavní vývojáři prohlížečů (Apple, Google, Microsoft a Mozilla) spolupracují na vývoji webové standardy V rámci Pracovní skupina Web Hypertext Application Technology.
Přestože se prohlížeče od sebe v mnoha důležitých ohledech stále liší, mají prodejci alespoň prostředky k vyhledávání a vytváření společné databáze namísto permanentní válku spolu. V souladu s tím získala rozhraní API prohlížeče nové možnosti. Např, Fetch API schopný 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 querySelector и querySelectorAll duplicitní výběry jQuery:

// jQuery
const fooDivs = $('.foo div');

// native
const fooDivs = document.querySelectorAll('.foo div');

Nyní můžete manipulovat s třídami prvků pomocí classList:

// jQuery
$('#warning').toggleClass('visible');

// native
document.querySelector('#warning').classList.toggle('visible');

Tato stránka Možná nebudete potřebovat jQuery Zde je několik dalších situací, ve kterých lze kód jQuery nahradit nativním kódem. Někteří vývojáři vždy zůstávají u jQuery, protože o nových API jednoduše nevědí, ale když už ano, začnou knihovnu používat méně často.

Použití nativních funkcí zlepšuje výkon stránky. Mnoho animační efekty z jQuery nyní můžete implementovat mnohem efektivnější pomocí CSS.

Druhým důvodem je, že se prohlížeče aktualizují mnohem rychleji než dříve. Většina z nich používá „evergreen“ strategie obnovy, s výjimkou Apple Safari. Mohou být aktualizovány na pozadí bez účasti uživatele a nejsou vázány na aktualizace OS.

To znamená, že nové funkce prohlížeče a opravy chyb jsou distribuovány mnohem rychleji a vývojáři nemusí čekat, až bude Mohu použít dosáhne přijatelné úrovně. Mohou s jistotou používat nové funkce a rozhraní API bez stahování jQuery nebo polyfillů.

Třetím důvodem je, že Internet Explorer se blíží stavu naprosté irelevance. IE je již dlouho prokletím vývoje webu po celém světě. Jeho chyby byly rozšířené, a protože IE dominovalo 2000 a nepoužívalo evergreenovou aktualizační strategii, starší verze jsou stále běžné.

V roce 2016 Microsoft urychlil vyřazení IE, přestává podporovat desátá a dřívější verze, omezující podporu na IE 11. A stále více si weboví vývojáři dopřávají luxusu ignorovat kompatibilitu IE.

Dokonce i jQuery přestalo podporovat IE 8 a nižší počínaje verze 2.0, zveřejněné v roce 2013. A i když je v některých případech podpora IE stále vyžadována, například na starších webech, tyto situace nastávají stále méně často.

Nové rámce

Od příchodu jQuery bylo vytvořeno mnoho frameworků, včetně moderních lídrů REACT, ANGULAR и Vue. Oproti jQuery mají dvě důležité výhody.

Za prvé, usnadňují rozdělení uživatelského rozhraní na komponenty. Rámce jsou navrženy tak, aby zvládaly vykreslování a aktualizaci stránek. A jQuery se obvykle používá pouze pro aktualizaci, přičemž úkol poskytnout počáteční stránku ponechává serveru.

Na druhou stranu komponenty React, Angular a Vue umožňují těsně propojit HTML, kód a dokonce i CSS. Stejně jako rozdělujeme kódovou základnu do mnoha samostatných funkcí a tříd, možnost rozdělit rozhraní na opakovaně použitelné komponenty usnadňuje vytváření a údržbu složitých webů.

Druhou výhodou je, že novější frameworky dodržují deklarativní paradigma, ve kterém vývojář popisuje, jak by mělo rozhraní vypadat, a nechává na frameworku, aby provedl všechny potřebné změny k dosažení požadovaného. Tento přístup je v rozporu s imperativním přístupem, který charakterizuje kód jQuery.

V jQuery si výslovně zapíšete kroky k provedení jakýchkoli změn. A v deklarativním rámci řeknete: "Podle těchto údajů by rozhraní mělo vypadat takto." To může značně usnadnit psaní kódu bez chyb.

Vývojáři přijali nové přístupy k vývoji webových stránek, a proto se popularita jQuery snížila.

Kdy použít jQuery?

Takže když by používat jQuery?

Pokud se zvyšuje složitost projektu, pak je lepší začít s jinou knihovnou nebo frameworkem, který umožňuje smysluplně řídit složitost. Například rozdělte rozhraní na komponenty. Používání jQuery na takových stránkách může zpočátku vypadat dobře, ale rychle povede ke špagetovému kódu, kde si nejste jisti, který fragment ovlivňuje kterou část stránky.

Byl jsem v takové situaci, když se snažím udělat jakoukoli změnu, připadá mi to jako obtížný úkol. Nemůžete si být jisti, že nic neporušíte, protože selektory jQuery závisí na struktuře HTML generované serverem.

Na druhém konci žebříčku jsou jednoduché weby, které vyžadují jen trochu interaktivity nebo dynamického obsahu. Ani v těchto případech bych nepoužil jQuery, protože s nativními API můžete dělat mnohem víc.

I kdybych potřeboval něco výkonnějšího, poohlédnu se po specializované knihovně, kupř. axios pro Ajax nebo Animate.css pro animace. Bude to jednodušší než načítání všech jQuery pro malou funkcionalitu.

Myslím, že nejlepším důvodem pro použití jQuery je to, že poskytuje komplexní funkce pro přední část webu. Místo učení různých nativních rozhraní API nebo specializovaných knihoven si můžete přečíst pouze dokumentaci jQuery a okamžitě se stát produktivními.

Imperativní přístup není dostatečně škálovatelný, ale je snazší se ho naučit než deklarativní přístup jiných knihoven. Pro web s jasně omezenými možnostmi je lepší použít jQuery a pracovat v klidu: knihovna nevyžaduje složité sestavení ani kompilaci.

Kromě toho je jQuery dobré, pokud jste si jisti, že se váš web časem nezkomplikuje, a pokud vám nezáleží na nativní funkčnosti, která bude jistě vyžadovat napsání více kódu než jQuery.

Tuto knihovnu můžete také použít, pokud potřebujete podporovat starší verze IE. Pak vám jQuery bude sloužit jako v dobách, kdy byl IE nejoblíbenějším prohlížečem.

prospekce

jQuery v dohledné době nezmizí. Ona aktivně se rozvíjejícía mnoho vývojářů dává přednost použití jeho API, i když jsou k dispozici nativní metody. Knihovna pomohla celé generaci vývojářů vytvořit webové stránky, které fungují v jakémkoli prohlížeči. Přestože byl v mnoha ohledech nahrazen novými knihovnami, frameworky a paradigmaty, jQuery sehrál při vytváření moderního webu nesmírně pozitivní roli.

Pokud se funkce jQuery výrazně nezmění, je pravděpodobné, že využití knihovny bude v příštích několika letech nadále pomalu, ale neustále klesat. Nové webové stránky mají tendenci být od začátku vytvářeny pomocí modernějších frameworků a vhodné případy použití pro jQuery jsou stále vzácnější.

Některým lidem se nelíbí rychlost, s jakou nástroje pro vývoj webových aplikací zastarávají, ale pro mě je to důkaz rychlého pokroku. jQuery nám umožnil dělat spoustu věcí lépe. Totéž platí pro její nástupce.

Zdroj: www.habr.com

Přidat komentář