jQuery historie og arv

jQuery historie og arv
jQuery - dette er det mest populære i verden et JavaScript-bibliotek. Nettutviklingsfellesskapet opprettet det på slutten av 2000-tallet, noe som resulterte i et rikt økosystem av nettsteder, plugins og rammeverk som bruker jQuery under panseret.

Men de siste årene har statusen som det fremste verktøyet for webutvikling erodert. La oss se på hvorfor jQuery ble populær og hvorfor den falt ut av moten, og også i hvilke tilfeller det fortsatt er tilrådelig å bruke den til å lage moderne nettsteder.

En kort historie om jQuery

John Resig (John Resig) opprettet den første versjonen av biblioteket i 2005, og utgitt i 2006-m, på et arrangement kalt BarCampNYC. På jQuery offisielle nettsted forfatteren skrev:

jQuery er et Javascript-bibliotek basert på mottoet: Javascript skal være morsomt å kode. jQuery tar vanlige, repeterende oppgaver, fjerner all unødvendig markering og gjør dem korte, elegante og rene.

jQuery har to hovedfordeler. Den første er en praktisk API for å manipulere nettsider. Spesielt gir det kraftige metoder for å velge elementer. Ikke bare kan du velge etter ID eller klasse, jQuery lar deg skrive komplekse uttrykk, for eksempel for å velge elementer basert på deres forhold til andre elementer:

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

Med tiden ble seleksjonsmekanismen et eget bibliotek sizzle.

Den andre fordelen med biblioteket var at det abstraherte forskjeller mellom nettlesere. I disse årene var det vanskelig å skrive kode som kunne fungere pålitelig i alle nettlesere.

Mangelen på standardisering betydde at utviklere måtte ta hensyn til mange forskjeller mellom nettlesere og edge-tilfeller. Se på denne tidlige jQuery-kildekoden og søk etter jQuery.browser. Her er ett eksempel:

// 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 utviklere flytte bekymringene om alle disse fallgruvene over på skuldrene til teamet som utvikler biblioteket.

Senere gjorde jQuery det lettere å implementere mer komplekse teknologier som animasjoner og Ajax. Biblioteket har i praksis blitt en standard avhengighet for nettsteder. Og i dag driver den en stor del av Internett. W3Techs mener det 74 % av nettstedene i dag bruker jQuery.

Kontroll over jQuery-utvikling har også blitt mer formalisert. I 2011 laget opprettet jQuery Board. Og i 2012 jQuery Board forvandlet til jQuery Foundation.

I 2015 fusjonerte jQuery Foundation med Dojo Foundation, å opprette JS Foundation, som deretter fusjonerte med Node.js Foundation til 2019-m å skape OpenJS Foundation, der jQuery var en av "gjennombruddsprosjekter. »

Skiftende omstendigheter

Imidlertid har jQuery de siste årene mistet sin popularitet. GitHub fjernet biblioteket fra frontend av nettstedet mitt. Bootstrap v5 bli kvitt jQueryfordi det er hans"største klientavhengighet for vanlig JavaScript"(for øyeblikket 30 KB i størrelse, forminsket og pakket). Flere trender innen nettutvikling har svekket jQuerys posisjon som et essensielt verktøy.

lesere

Av en rekke årsaker har nettleserforskjeller og begrensninger blitt mindre viktige. For det første har standardiseringen blitt bedre. Store nettleserutviklere (Apple, Google, Microsoft og Mozilla) jobber sammen for å utvikle nettstandarder innenfor rammen Web Hypertekst Application Technology Working Group.
Selv om nettlesere fortsatt skiller seg fra hverandre på en rekke viktige måter, har leverandører i det minste et middel til å søke og lage en felles database i stedet for permanent krig sammen. Følgelig har nettleser-APIer fått nye muligheter. f.eks. Hent API i stand til å erstatte Ajax-funksjoner 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);
    });

fremgangsmåter querySelector и querySelectorAll dupliserte jQuery-velgere:

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

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

Du kan nå manipulere elementklasser ved å bruke klasseliste:

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

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

Området Du trenger kanskje ikke jQuery Her er noen flere situasjoner der jQuery-kode kan erstattes med innebygd kode. Noen utviklere holder seg alltid til jQuery fordi de rett og slett ikke vet om de nye API-ene, men når de gjør det, begynner de å bruke biblioteket sjeldnere.

Bruk av integrerte funksjoner forbedrer sideytelsen. Mange animasjonseffekter fra jQuery nå kan du implementere mye mer effektivt bruker CSS.

Den andre grunnen er at nettlesere oppdateres mye raskere enn før. De fleste av dem bruker «evergreen» fornyelsesstrategi, med unntak av Apple Safari. De kan oppdateres i bakgrunnen uten brukerinvolvering og er ikke knyttet til OS-oppdateringer.

Dette betyr at nye nettleserfunksjoner og feilrettinger distribueres mye raskere, og utviklere trenger ikke å vente til Kan jeg bruke vil nå et akseptabelt nivå. De kan trygt bruke nye funksjoner og APIer uten å laste ned jQuery eller polyfills.

Den tredje grunnen er at Internet Explorer nærmer seg en tilstand av fullstendig irrelevans. IE har lenge vært banebrytende for nettutvikling over hele verden. Feilene var utbredt, og fordi IE dominerte på 2000-tallet og ikke brukte en eviggrønn oppdateringsstrategi, er eldre versjoner fortsatt vanlige.

I 2016 akselererte Microsoft avviklingen av IE, slutter å støtte tiende og tidligere versjoner, begrenser støtten til IE 11. Og i økende grad har webutviklere den luksusen å ignorere IE-kompatibilitet.

Til og med jQuery sluttet å støtte IE 8 og lavere fra og med versjon 2.0, utgitt i 2013. Og selv om det i noen tilfeller fortsatt kreves IE-støtte, for eksempel på eldre nettsteder, oppstår disse situasjonene sjeldnere og sjeldnere.

Nye rammer

Siden bruken av jQuery har mange rammeverk blitt opprettet, inkludert moderne ledere Reager, Vinkel и Vue. De har to viktige fordeler fremfor jQuery.

For det første gjør de det enkelt å dele brukergrensesnittet i komponenter. Rammer er designet for å håndtere sidegjengivelse og oppdatering. Og jQuery brukes vanligvis bare for oppdatering, og overlater oppgaven med å gi den første siden til serveren.

På den annen side lar React-, Angular- og Vue-komponenter deg koble HTML, kode og til og med CSS tett. Akkurat som vi deler kodebasen inn i mange selvstendige funksjoner og klasser, gjør muligheten til å dele grensesnittet inn i gjenbrukbare komponenter det enklere å bygge og vedlikeholde komplekse nettsteder.

Den andre fordelen er at nyere rammeverk holder seg til et deklarativt paradigme, der utvikleren beskriver hvordan grensesnittet skal se ut og overlater til rammeverket å gjøre alle nødvendige endringer for å oppnå det som er ønsket. Denne tilnærmingen er i strid med den imperative tilnærmingen som kjennetegner jQuery-kode.

I jQuery skriver du eksplisitt ned trinnene for å gjøre endringer. Og i et deklarativt rammeverk sier du: "I henhold til disse dataene skal grensesnittet se slik ut." Dette kan gjøre det mye enklere å skrive feilfri kode.

Utviklere har tatt i bruk nye tilnærminger til utvikling av nettsteder, og det er grunnen til at jQuerys popularitet har gått ned.

Når skal jeg bruke jQuery?

Så når bør bruker jQuery?

Hvis kompleksiteten til prosjektet øker, er det bedre å starte med et annet bibliotek eller rammeverk som lar deg administrere kompleksiteten meningsfullt. Del for eksempel opp grensesnittet i komponenter. Å bruke jQuery på slike nettsteder kan se bra ut til å begynne med, men det vil raskt føre til spaghettikode hvor du ikke er sikker på hvilket fragment som påvirker hvilken del av siden.

Jeg har vært i en slik situasjon, når jeg prøver å gjøre endringer, føles det som en vanskelig oppgave. Du kan ikke være sikker på at du ikke vil ødelegge noe fordi jQuery-velgerne avhenger av HTML-strukturen som genereres av serveren.

I den andre enden av skalaen er enkle nettsteder som bare krever litt interaktivitet eller dynamisk innhold. Jeg ville ikke brukt jQuery som standard i disse tilfellene heller, fordi det er så mye mer du kan gjøre med native APIer.

Selv om jeg trenger noe kraftigere, vil jeg se etter et spesialisert bibliotek, f.eks. Axios for Ajax eller Animate.css for animasjoner. Dette vil være enklere enn å laste all jQuery for en liten funksjonalitet.

Jeg tror den beste begrunnelsen for å bruke jQuery er at det gir omfattende funksjonalitet for frontenden av et nettsted. I stedet for å lære en rekke native API-er eller spesialiserte biblioteker, kan du bare lese jQuery-dokumentasjonen og bli umiddelbart produktiv.

Den imperative tilnærmingen skalerer ikke godt, men den er lettere å lære enn den deklarative tilnærmingen til andre biblioteker. For et nettsted med klart begrensede muligheter er det bedre å bruke jQuery og jobbe rolig: biblioteket krever ikke kompleks montering eller kompilering.

I tillegg er jQuery bra hvis du er sikker på at nettstedet ditt ikke vil bli komplisert over tid, og hvis du ikke bryr deg om innebygd funksjonalitet, som helt sikkert vil kreve å skrive mer kode enn jQuery.

Du kan også bruke dette biblioteket hvis du trenger å støtte eldre versjoner av IE. Da vil jQuery tjene deg som den gjorde den gang da IE var den mest populære nettleseren.

Prøveboring

jQuery vil ikke forsvinne med det første. Hun aktivt utvikler seg, og mange utviklere foretrekker å bruke API-en, selv om native metoder er tilgjengelige. Biblioteket har hjulpet en hel generasjon utviklere med å lage nettsider som fungerer på alle nettlesere. Selv om det har blitt erstattet på mange måter av nye biblioteker, rammer og paradigmer, har jQuery spilt en enormt positiv rolle i etableringen av det moderne nettet.

Med mindre funksjonaliteten til jQuery endres betydelig, er det sannsynlig at bruken av biblioteket vil fortsette å sakte men jevnt avta i løpet av de neste årene. Nye nettsteder har en tendens til å bli bygget ved hjelp av mer moderne rammeverk fra starten av, og passende brukstilfeller for jQuery blir stadig mer sjeldne.

Noen mennesker liker ikke hastigheten som webutviklingsverktøy blir foreldet, men for meg er det et bevis på rask fremgang. jQuery har tillatt oss å gjøre mange ting bedre. Det samme gjelder hennes etterfølgere.

Kilde: www.habr.com

Legg til en kommentar