Historik och arv av jQuery

Historik och arv av jQuery
jQuery – den mest populĂ€ra JavaScript-biblioteket i vĂ€rlden. Gemenskapen av webbutvecklare skapade det i slutet av 2000-talet, vilket ledde till uppkomsten av ett rikt ekosystem av webbplatser, plugins och ramverk som anvĂ€nder jQuery under huven.

Men under de senaste Ären har dess status som det frÀmsta verktyget för webbutveckling skakat. LÄt oss titta pÄ varför jQuery blev populÀr och varför den har blivit omodern, samt under vilka omstÀndigheter den fortfarande Àr lÀmplig att anvÀnda för att skapa moderna webbplatser.

En kort historia av jQuery

John Resig (John Resig) skapade den första versionen av biblioteket 2005 och publicerade den 2006- pÄ ett evenemang som kallades BarCampNYC. PÄ den officiella jQuery-webbplatsen skrev författaren:

jQuery Àr ett JavaScript-bibliotek vars motto Àr: Att programmera i JavaScript ska vara roligt. jQuery tar vanliga, repetitiva uppgifter, tar bort allt onödigt markup och gör dem korta, eleganta och intuitiva.

jQuery har tvÄ huvudfördelar. Den första Àr ett anvÀndarvÀnligt API för att manipulera webbsidor. SÀrskilt erbjuder det kraftfulla metoder för att vÀlja element. Man kan vÀlja inte bara efter ID eller klasser; jQuery tillÄter att skriva komplexa uttryck, till exempel för att vÀlja element baserat pÄ deras relationer med andra element:

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

Med tiden utvecklades urvalsmekanismen till ett separat bibliotek Sizzle.

Den andra fördelen med biblioteket var att det abstraherade skillnaderna mellan webblÀsare. PÄ den tiden var det svÄrt att skriva kod som pÄlitligt fungerade i alla webblÀsare.

Avsaknad av standardisering innebar att utvecklarna behövde ta hÀnsyn till mÄnga skillnader mellan webblÀsare och specialfall. Ta en titt pÄ denna tidiga kÀllkod av jQuery och leta efter jQuery.browser. HÀr Àr ett av exemplen:

// 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);
}

Och tack vare jQuery kunde utvecklarna överlÄta ansvaret för alla dessa fallgropar pÄ teamet som utvecklade biblioteket.

Senare gjorde jQuery det lÀttare att implementera mer komplexa teknologier, som animationer och Ajax. Biblioteket har faktiskt blivit en standardberoende för webbplatser. Idag stödjer det en stor del av internet. W3Techs anser att 74 % av webbplatserna idag anvÀnder jQuery.

Kontrollen över utvecklingen av jQuery har ocksĂ„ blivit mer formaliserad. År 2011 skapade teamet jQuery Board. Och 2012 jQuery Board förvandlades till jQuery Foundation.

År 2015 anslöt sig jQuery Foundation till Dojo Foundation, för att skapa JS Foundation, som sedan gick samman med Node.js Foundation i 2019-t för att skapa OpenJS Foundation, dĂ€r jQuery var ett av "banbrytande projekten.»

FörÀndrade omstÀndigheter

Men under de senaste Ären har jQuery tappat en del av sin popularitet. GitHub tog bort biblioteket frÄn frontend pÄ sin webbplats. Bootstrap v5 ska bli av med jQuery, eftersom det Àr dess "största klientberoende för vanlig JavaScript" (för tillfÀllet 30 kB, minifierad och paketerad). Flera trender inom webbdesign har försvagat jQuerys stÀllning som ett nödvÀndigt verktyg.

WebblÀsare

Av flera skÀl har skillnaderna och begrÀnsningarna mellan webblÀsare blivit mindre viktiga. För det första har standardiseringen förbÀttrats. De frÀmsta webblÀsarutvecklarna (Apple, Google, Microsoft och Mozilla) utvecklar tillsammans webbstandarder inom Web Hypertext Application Technology Working Group.
Även om webblĂ€sare fortfarande skiljer sig Ă„t pĂ„ flera viktiga punkter, har leverantörerna Ă„tminstone ett medel för att hitta och skapa en gemensam bas istĂ€llet för permanent krig med varandra. Följaktligen har webblĂ€sares API:er fĂ„tt nya möjligheter. Till exempel, Fetch API kan ersĂ€tta Ajax-funktioner frĂ„n 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);
    });

Metoder querySelector och querySelectorAll duplicerar selektionsverktygen frÄn jQuery:

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

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

Att manipulera elementklasser kan nu göras med classList:

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

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

PÄ webbplatsen You Might Not Need jQuery nÀmns flera andra situationer dÀr jQuery-kod kan ersÀttas med native-kod. Vissa utvecklare hÄller alltid fast vid jQuery, eftersom de helt enkelt inte kÀnner till de nya API:erna, men nÀr de fÄr kÀnnedom om dem, börjar de anvÀnda biblioteket mer sÀllan.

Att anvÀnda inbyggda funktioner kan förbÀttra sidprestanda. MÄnga animations effekter frÄn jQuery kan nu implementeras mycket mer effektivt med CSS.

Den andra anledningen Àr att webblÀsare uppdateras mycket snabbare Àn tidigare. De flesta av dem anvÀnder "evig grön" uppdateringsstrategi, med undantag för Apple Safari. De kan uppdateras i bakgrunden utan att anvÀndaren behöver delta och Àr inte knutna till operativsystemets uppdateringar.

Detta innebÀr att nya webblÀsarfunktioner och buggfixar sprids mycket snabbare, och utvecklare behöver inte vÀnta pÄ att andelen Can I Use nÄr de nÄr et acceptabelt niveau. De kan trygt bruge nye funktioner og API'er uden at indlÊse jQuery eller polyfills.

Den tredje grund er, at Internet Explorer nĂŠrmer sig en tilstand af total irrelevans. IE har lĂŠnge vĂŠret en plage for webudvikling over hele verden. Typiske fejl er blevet meget udbredte, og da IE dominerede i 2000'erne og ikke anvendte en "evergreen" opdateringsstrategi, findes der stadig ofte gamle versioner.

I 2016 accelererede Microsoft udfasningen af IE, ved at stoppe med at stĂžtte den tiende og tidligere versioner, begrĂŠnsende stĂžtten til IE 11. Og webudviklere kan i stigende grad tillade sig at ignorere kompatibilitet med IE.

Selv jQuery stoppede med at understÞtte IE 8 og tidligere versioner fra version 2.0, som blev udgivet i 2013. Selvom der stadig er tilfÊlde, hvor stÞtte til IE er nÞdvendig, f.eks. pÄ Êldre websteder, opstÄr disse situationer sjÊldnere.

Nye rammer

Siden jQuerys fremkomst er der blevet skabt mange rammer, herunder moderne ledere som React, Angular och Vue. De har to vigtige fordele i forhold til jQuery.

For det fÞrste gÞr de det let at opdele brugergrÊnsefladen i komponenter. Rammerne er designet til at hÄndtere rendering og opdatering af sider. jQuery bruges normalt kun til opdatering, idet serveren stiller den indledende side til rÄdighed.

PĂ„ den anden side gĂžr komponenter i React, Angular og Vue det muligt at binde HTML, kode og endda CSS tĂŠt sammen. Ligesom vi opdeler kodebasen i mange selvstĂŠndige funktioner og klasser, gĂžr muligheden for at opdele grĂŠnsefladen i genanvendelige komponenter det nemmere at samle og vedligeholde komplekse websteder.

Den anden fordel er, at nyere rammer fÞlger den deklarative paradieme, hvor udvikleren beskriver, hvordan grÊnsefladen skal se ud, og alle nÞdvendige Êndringer for at opnÄ dette overlades til rammen. Denne tilgang stÄr i kontrast til den imperativ tilgang, der kendetegner jQuery-kode.

I jQuery angiver du eksplicit trinene for at foretage Êndringer. I en deklarativ ramme siger du: "I henhold til disse data, skal grÊnsefladen se sÄdan ud." Dette kan gÞre det betydeligt lettere at skrive fejlfri kode.

Utvecklare har anammat nya tillvÀgagÄngssÀtt för webbplatsutveckling, vilket har lett till att populariteten för jQuery har minskat.

NÀr ska man anvÀnda jQuery?

SÄ nÀr ska man anvÀnda jQuery?

Om projektets komplexitet ökar, Àr det bÀttre att börja med ett annat bibliotek eller ramverk som gör det möjligt att hantera komplexitet pÄ ett meningsfullt sÀtt. Till exempel kan man dela upp grÀnssnittet i komponenter. AnvÀndning av jQuery pÄ sÄdana webbplatser i början kan verka acceptabelt, men det kommer snabbt leda till spaghetti-kod, dÀr du inte Àr sÀker pÄ vilken del som pÄverkar vilken del av sidan.

Jag har varit i en sÄdan situation, dÀr varje förÀndring kÀnns som en svÄr uppgift. Man kan inte vara sÀker pÄ att man inte kommer att bryta nÄgot eftersom jQuery-selektorer Àr beroende av HTML-strukturen skapad av servern.

I andra Ànden av skalan finns enkla webbplatser som bara behöver lite interaktivitet eller dynamiskt innehÄll. I sÄdana fall skulle jag inte heller anvÀnda jQuery som standard, eftersom man kan göra mycket mer med de inbyggda API:erna.

Till och med om jag behöver nÄgot mer kraftfullt, kommer jag att leta efter ett specialiserat bibliotek, till exempel, axios för Ajax eller Animate.css för animationer. Det kommer att vara enklare Àn att ladda hela jQuery för liten funktionalitet.

Jag tror att det bÀsta skÀlet till att anvÀnda jQuery Àr att det erbjuder en omfattande funktionalitet för frontend-arbete pÄ webbplatsen. IstÀllet för att lÀra sig om olika inbyggda API:er eller specialiserade bibliotek kan du bara lÀsa jQuery-dokumentationen och bli produktiv direkt.

Det imperativa tillvÀgagÄngssÀttet skalas dÄligt, men det Àr lÀttare att lÀra sig Àn det deklarativa tillvÀgagÄngssÀttet hos andra bibliotek. För en webbplats med uppenbart begrÀnsade funktioner Àr det bÀttre att anvÀnda jQuery och arbeta bekvÀmt: biblioteket krÀver ingen komplicerad byggprocess eller kompilering.

Dessutom Àr jQuery bra i de fall dÀr du Àr sÀker pÄ att webbplatsen inte kommer att bli mer komplex över tid, och om du inte bekymrar dig för inbyggd funktionalitet, som definitivt kommer att krÀva mer kod Àn jQuery.

Du kan ocksÄ anvÀnda detta bibliotek om du behöver stödja Àldre versioner av IE. DÄ jQuery kommer att fungera för dig som pÄ den tiden nÀr IE var den mest populÀra webblÀsaren.

En blick in i framtiden

jQuery försvinner inte snart. Den utvecklas aktivt, och mÄnga utvecklare föredrar att anvÀnda dess API, Àven med tillgÀngliga inbyggda metoder. Biblioteket har hjÀlpt en hel generation utvecklare att skapa webbplatser som fungerar i alla webblÀsare. Och Àven om nya bibliotek, ramverk och paradigmer har ersatt det i mÄnga avseenden, har jQuery spelat en enormt positiv roll i skapandet av det moderna webben.

Om jQuery:s funktionalitet inte förÀndras drastiskt, Àr det mycket troligt att anvÀndningen av biblioteket kommer att fortsÀtta att lÄngsamt, men stadigt, minska under de kommande Ären. Nya webbplatser skapas vanligtvis frÄn början med mer moderna ramverk, och lÀmpliga anvÀndningsscenarier för jQuery dyker upp allt mer sÀllan.

Vissa ogillar hur snabbt verktyg för webbutveckling blir förÄldrade, men för mig Àr det ett tecken pÄ snabb framsteg. jQuery har gjort mycket bÀttre. Detsamma gÀller för dess eftertrÀdare.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster