
jQuery — JavaScript-bibliotek i verden. Webudvikleres fællesskab skabte det i slutningen af 2000'erne, hvilket førte til oprettelsen af et rigt økosystem af websteder, plug-ins og rammer, der bruger jQuery under motorhjelmen.
Men i de seneste år er dens status som det primære værktøj til webudvikling blevet udfordret. Lad os se på, hvorfor jQuery blev populært og hvorfor det er ude af mode, samt i hvilke tilfælde det stadig er hensigtsmæssigt at bruge til at skabe moderne websteder.
Kort historie om jQuery
John Resig () skabte den første version af biblioteket i 2005, og -en på et arrangement kaldet BarCampNYC. På skrev forfatteren:
jQuery er et Javascript-bibliotek, hvis motto er: At programmere i Javascript skal være sjovt. jQuery tager hyppige, repetitive opgaver, fjerner al unødvendig markup og gør dem korte, elegante og forståelige.
jQuery har to hovedfordele. Den første er et brugervenligt API til manipulation af websider. Især leverer det kraftfulde metoder til valg af elementer. Du kan vælge ikke kun efter ID eller klasser, jQuery giver mulighed for at skrive komplekse udtryk, for eksempel til at vælge elementer baseret på deres relationer til andre elementer:
// Select every item within the list of people within the contacts element
$('#contacts ul.people li');Over tid blev valgmekanismen til et separat bibliotek .
Den anden fordel ved biblioteket var, at det abstraherede forskellene mellem browsere. I de dage var det svært at skrive kode, der kunne fungere pålideligt i alle browsere.
Mangel på standardisering betød, at udviklere skulle tage hensyn til mange forskelle mellem browsere og grænsetilfælde. Tag et kig på og søg efter jQuery.browser. Her er et af eksemplerne:
// 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);
}Og takket være jQuery kunne udviklere lægge bekymringerne om alle disse faldgruber på skuldrene af teamet, der udviklede biblioteket.
Senere lettede jQuery implementeringen af mere komplekse teknologier som animationer og Ajax. Biblioteket blev faktisk en standardafhængighed for websites. Og i dag driver det en enorm del af internettet. W3Techs mener, at .
Kontrollen over udviklingen af jQuery blev også mere formaliseret. I 2011 skabte teamet . Og i 2012 blev jQuery Board.
I 2015 fusionerede jQuery Foundation med Dojo Foundation,, som derefter fusionerede med Node.js Foundation i-en for at skabe, hvor jQuery var et af ".»
Skiftende omstændigheder
Men i de seneste år har jQuery . GitHub. Bootstrap v5 , fordi det er dens "" (i øjeblikket er det 30 kb, minificeret og pakket). Flere tendenser inden for webudvikling har svækket jQuerys position som et nødvendigt værktøj.
Browsere
Af flere grunde er forskelle og begrænsninger på tværs af browsere blevet mindre vigtige. For det første er standardiseringen blevet bedre. De vigtigste browserudviklere (Apple, Google, Microsoft og Mozilla) arbejder sammen om at udvikle i rammerne af.
Selvom browsere stadig adskiller sig fra hinanden på flere vigtige punkter, har leverandørerne i det mindste et middel til at finde og skabe en fælles base i stedet for mod hinanden. Følgelig har browser-API'er fået nye muligheder. For eksempel kan erstatte Ajax-funktioner fra 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 og duplikerer udvalgsmetoder fra jQuery:
// jQuery
const fooDivs = $('.foo div');
// native
const fooDivs = document.querySelectorAll('.foo div');At manipulere klassernes elementer kan nu gøres med :
// jQuery
$('#warning').toggleClass('visible');
// native
document.querySelector('#warning').classList.toggle('visible');På hjemmesiden der er angivet flere situationer, hvor jQuery-kode kan erstattes med native kode. Nogle udviklere holder sig altid til jQuery, fordi de blot ikke kender de nye API'er, men når de opdager dem, begynder de at bruge dette bibliotek mindre.
Brug af native funktioner kan forbedre sidepræstationen. Mange kan nu implementeres ved hjælp af CSS.
Den anden årsag er, at browsere opdateres meget hurtigere end tidligere. De fleste bruger , undtagen Apple Safari. De kan opdateres i baggrunden uden brugerinddragelse og er ikke knyttet til OS-opdateringer.
Dette betyder, at nye funktioner i browsere og fejlrettelser spredes hurtigere, og udviklere behøver ikke at vente på, at andelen af når et acceptabelt niveau er nået. De kan trygt bruge nye funktioner og API'er uden at indlæse jQuery eller polyfills.
Den tredje grund er, at Internet Explorer er ved at blive helt irrelevant. IE har længe været en plage for webudvikling verden over. Dens karakteristiske fejl har været udbredte, og da IE dominerede i 2000'erne og ikke brugte en "evergreen" opdateringsstrategi, findes der stadig mange gamle versioner.
I 2016 accelererede Microsoft udfasningen af IE, version 10 og ældre, og begrænsede sig til at understøtte IE 11. Og webudviklere kan i stigende grad tillade sig at ignorere kompatibilitet med IE.
Selv jQuery holdt op med at understøtte IE 8 og ældre fra , som blev udgivet i 2013. Selvom der stadig er behov for at støtte IE i nogle tilfælde, for eksempel på ældre websteder, opstår disse situationer sjældnere.
Nye rammer
Siden jQuery's fremkomst er der skabt mange rammer, herunder moderne ledere , og . De har to vigtige fordele i forhold til jQuery.
For det første gør de det nemt at opdele brugergrænsefladen i komponenter. Rammerne er designet til at håndtere rendering og opdatering af siden. jQuery bruges normalt kun til opdatering, idet serveren får til opgave at levere den initielle side.
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 lettere at bygge og vedligeholde komplekse websteder.
Den anden fordel er, at nyere rammer følger den deklarative paradigme, hvori udvikleren beskriver, hvordan grænsefladen skal se ud, mens rammerne selv håndterer alle nødvendige ændringer for at opnå det ønskede. Denne tilgang er i modsætning til den imperativ tilgang, der kendetegner jQuery-kode.
I jQuery angiver du tydeligt de trin, der skal tages for at foretage ændringer. Men i en deklarativ ramme siger du: "Ifølge disse data skal grænsefladen se sådan ud." Dette kan gøre kodningen uden fejl meget lettere.
Udviklere har taget nye tilgange til webudvikling i brug, hvilket har medført, at populariteten af jQuery er faldet.
Hvornår skal man bruge jQuery?
Så hvornår skal man you should bruge jQuery?
Hvis projektets kompleksitet stiger, er det bedre at begynde med et andet bibliotek eller framework, der giver mulighed for meningsfuldt at styre kompleksitet. For eksempel at opdele grænsefladen i komponenter. At bruge jQuery på sådanne websteder i starten kan virke acceptabelt, men det vil hurtigt føre til spaghetti-kode, hvor man ikke er sikker på, hvilken del der påvirker hvilken del af siden.
Jeg har været i en sådan situation; når jeg forsøger at lave enhver ændring, føles det som en vanskelig opgave. Man kan ikke være sikker på, at man ikke bryder noget, fordi jQuery-selektorer afhænger af den HTML-struktur, der er oprettet af serveren.
I den modsatte ende af skalaen er der enkle websteder, der kun kræver lidt interaktivitet eller dynamisk indhold. I sådanne tilfælde ville jeg heller ikke automatisk bruge jQuery, fordi man kan gøre meget mere med native API'er.
Selv hvis jeg har brug for noget mere kraftfuldt, ville jeg søge efter et specialiseret bibliotek, for eksempel til Ajax eller til animationer. Det vil være lettere end at indlæse hele jQuery for en lille funktionalitet.
Jeg mener, det bedste argument for at bruge jQuery er, at det tilbyder omfattende funktionalitet til at arbejde med frontend af et websted. I stedet for at lære en række forskellige native API'er eller specialiserede biblioteker, kan du blot læse jQuery-dokumentationen og straks blive produktiv.
Den imperativ tilgang skalerer dårligt, men den er lettere at mestre end den deklarative tilgang fra andre biblioteker. For et websted med klart begrænsede funktioner er det bedre at anvende jQuery og arbejde afslappet: biblioteket kræver ikke kompleks opsætning eller kompilering.
Desuden er jQuery god i tilfælde, hvor du er sikker på, at webstedet ikke vil blive mere kompliceret over tid, og hvis du ikke bekymrer dig om native funktionalitet, som uden tvivl kræver mere kode end jQuery.
Du kan også bruge dette bibliotek, hvis du skal understøtte ældre versioner af IE. Så vil jQuery være til hjælp for dig, ligesom dengang IE var den mest populære browser.
Et blik ind i fremtiden
jQuery forsvinder ikke lige foreløbigt. Det , og mange udviklere foretrækker at bruge dens API, selv når native metoder er tilgængelige. Biblioteket har hjulpet en hel generation af udviklere med at skabe websteder, der fungerer i alle browsere. Og selvom nye biblioteker, rammer og paradigmer i mange henseender har overtaget, har jQuery spillet en enormt positiv rolle i skabelsen af det moderne web.
Hvis jQuery's funktionalitet ikke ændrer sig væsentligt, er det helt sandsynligt, at brugen af biblioteket vil fortsætte med at falde langsomt, men støt over de næste par år. Nye hjemmesider bliver typisk oprettet med mere moderne rammer fra starten, og de passende anvendelsesscenarier for jQuery opstår stadig sjældnere.
Nogle mennesker bryder sig ikke om den hurtige forældelse af værktøjer til webudvikling, men for mig er det et tegn på hurtig fremgang. jQuery har gjort det muligt for os at gøre mange ting bedre. Det samme gælder for dens efterfølgere.
Kilde: habr.com
