
jQuery â 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 () skapade den första versionen av biblioteket 2005 och - pÄ ett evenemang som kallades BarCampNYC. PÄ den 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 .
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Ä 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 .
Kontrollen över utvecklingen av jQuery har ocksÄ blivit mer formaliserad. à r 2011 skapade teamet . Och 2012 jQuery Board.
à r 2015 anslöt sig jQuery Foundation till Dojo Foundation,, som sedan gick samman med Node.js Foundation i-t för att skapa, dÀr jQuery var ett av ".»
FörÀndrade omstÀndigheter
Men under de senaste Ären har jQuery . GitHub. Bootstrap v5 , eftersom det Àr dess "" (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 inom.
Ă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 med varandra. Följaktligen har webblĂ€sares API:er fĂ„tt nya möjligheter. Till exempel, 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 och 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 :
// jQuery
$('#warning').toggleClass('visible');
// native
document.querySelector('#warning').classList.toggle('visible');PÄ webbplatsen 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 kan nu implementeras med CSS.
Den andra anledningen Àr att webblÀsare uppdateras mycket snabbare Àn tidigare. De flesta av dem anvÀnder , 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 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, 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 , 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 , och . 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, för Ajax eller 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 , 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
