jQuery historie og arv

jQuery historie og arv
jQuery - dette er det mest populære i verden et JavaScript-bibliotek. Webudviklingsfællesskabet skabte det i slutningen af ​​2000'erne, hvilket resulterede i et rigt økosystem af websteder, plugins og rammer ved hjælp af jQuery under hætten.

Men i de senere år er dens status som det førende værktøj til webudvikling eroderet. Lad os se på, hvorfor jQuery blev populær, og hvorfor det faldt af mode, og også i hvilke tilfælde det stadig er tilrådeligt at bruge det til at skabe moderne hjemmesider.

En kort historie om jQuery

John Resig (John Resig) oprettede den første version af biblioteket i 2005, og udgivet i 2006-m, ved en begivenhed kaldet BarCampNYC. På jQuery officielle hjemmeside forfatteren skrev:

jQuery er et Javascript-bibliotek baseret på mottoet: Javascript skal være sjovt at kode. jQuery tager almindelige, gentagne opgaver, fjerner al den unødvendige markering og gør dem korte, elegante og rene.

jQuery har to hovedfordele. Den første er en praktisk API til at manipulere websider. Det giver især kraftfulde metoder til at vælge elementer. Ikke kun kan du vælge efter ID eller klasse, jQuery giver dig mulighed for at skrive komplekse udtryk, for eksempel for at vælge elementer baseret på deres relationer med andre elementer:

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

Med tiden udviklede udvælgelsesmekanismen sig til et separat bibliotek Sizzle.

Den anden fordel ved biblioteket var, at det abstraherede forskelle mellem browsere. I de år var det svært at skrive kode, der kunne fungere pålideligt i alle browsere.

Manglen på standardisering betød, at udviklere skulle tage højde for adskillige forskelle mellem browsere og edge cases. Se på denne tidlige jQuery-kildekode og søg efter jQuery.browser. Her er et 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 udviklere flytte bekymringerne om alle disse faldgruber over på skuldrene af holdet, der udviklede biblioteket.

Senere gjorde jQuery det nemmere at implementere mere komplekse teknologier såsom animationer og Ajax. Biblioteket er reelt blevet en standardafhængighed for websteder. Og i dag driver den en stor del af internettet. Det mener W3Techs 74 % af webstederne bruger i dag jQuery.

Kontrol over jQuery-udvikling er også blevet mere formaliseret. I 2011 holdet oprettet jQuery Board. Og i 2012 jQuery Board omdannet til jQuery Foundation.

I 2015 fusionerede jQuery Foundation med Dojo Foundation, at skabe JS Foundation, som derefter fusionerede med Node.js Foundation til 2019-m at skabe OpenJS Foundation, hvor jQuery var en af ​​"banebrydende projekter».

Skiftende omstændigheder

Men i de seneste år har jQuery mistet sin popularitet. GitHub fjernede biblioteket fra frontenden af ​​mit websted. Bootstrap v5 slippe af med jQueryfordi det er hans"største klientafhængighed for almindelig JavaScript"(i øjeblikket 30 KB i størrelse, minimeret og pakket). Adskillige tendenser inden for webudvikling har svækket jQuerys position som et væsentligt værktøj.

Браузеры

Af en række årsager er browserforskelle og begrænsninger blevet mindre vigtige. For det første er standardiseringen forbedret. Store browserudviklere (Apple, Google, Microsoft og Mozilla) arbejder sammen om at udvikle webstandarder inden for Arbejdsgruppe for webhypertekstapplikationsteknologi.
Selvom browsere stadig adskiller sig fra hinanden på en række vigtige måder, har leverandører i det mindste et middel til at søge og oprette en fælles database i stedet for permanent krig sammen. Derfor har browser-API'er fået nye muligheder. F.eks, Hent API i stand til at 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 querySelector и querySelectorAll dublerede jQuery-vælgere:

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

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

Du kan nu manipulere elementklasser vha klasseliste:

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

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

Webstedet Du har muligvis ikke brug for jQuery Her er et par flere situationer, hvor jQuery-kode kan erstattes med indbygget kode. Nogle udviklere holder sig altid til jQuery, fordi de simpelthen ikke kender til de nye API'er, men når de gør det, begynder de at bruge biblioteket sjældnere.

Brug af indbyggede funktioner forbedrer sideydelsen. Mange animationseffekter fra jQuery nu kan du implementere meget mere effektivt ved hjælp af CSS.

Den anden grund er, at browsere opdateres meget hurtigere end før. De fleste af dem bruger "stedsegrøn" fornyelsesstrategi, med undtagelse af Apple Safari. De kan opdateres i baggrunden uden brugerinvolvering og er ikke bundet til OS-opdateringer.

Det betyder, at nye browserfunktioner og fejlrettelser distribueres meget hurtigere, og udviklere behøver ikke at vente til Kan jeg bruge vil nå et acceptabelt niveau. De kan trygt bruge nye funktioner og API'er uden at downloade jQuery eller polyfills.

Den tredje grund er, at Internet Explorer nærmer sig en tilstand af fuldstændig irrelevans. IE har længe været banebrydende for webudvikling over hele verden. Dens fejl var udbredt, og fordi IE dominerede 2000'erne og ikke brugte en stedsegrøn opdateringsstrategi, er ældre versioner stadig almindelige.

I 2016 fremskyndede Microsoft nedlukningen af ​​IE, holder op med at støtte tiende og tidligere versioner, hvilket begrænser understøttelsen til IE 11. Og i stigende grad har webudviklere den luksus at ignorere IE-kompatibilitet.

Selv jQuery holdt op med at understøtte IE 8 og derunder fra version 2.0, udgivet i 2013. Og selvom der i nogle tilfælde stadig kræves IE-support, for eksempel på ældre websteder, opstår disse situationer sjældnere og sjældnere.

Nye rammer

Siden fremkomsten af ​​jQuery er der blevet skabt mange rammer, inklusive moderne ledere Reagerer, Vinkelforskydning и Vue. De har to vigtige fordele i forhold til jQuery.

For det første gør de det nemt at adskille brugergrænsefladen i komponenter. Rammer er designet til at håndtere sidegengivelse og opdatering. Og jQuery bruges normalt kun til opdatering, hvilket efterlader opgaven med at levere den indledende side til serveren.

På den anden side giver React-, Angular- og Vue-komponenter dig mulighed for at koble HTML, kode og endda CSS tæt sammen. Ligesom vi opdeler kodebasen i mange selvstændige funktioner og klasser, gør evnen til at opdele grænsefladen i genbrugelige komponenter det nemmere at bygge og vedligeholde komplekse websteder.

Den anden fordel er, at nyere rammer overholder et deklarativt paradigme, hvor udvikleren beskriver, hvordan grænsefladen skal se ud og overlader det til rammen at foretage alle de nødvendige ændringer for at opnå det ønskede. Denne tilgang er i modstrid med den imperative tilgang, der kendetegner jQuery-kode.

I jQuery skriver du eksplicit ned trinene for at foretage ændringer. Og i en deklarativ ramme siger du: "Ifølge disse data skulle grænsefladen se sådan ud." Dette kan gøre det meget nemmere at skrive fejlfri kode.

Udviklere har taget nye tilgange til hjemmesideudvikling, hvorfor jQuerys popularitet er faldet.

Hvornår skal man bruge jQuery?

Så når skal være bruge jQuery?

Hvis kompleksiteten af ​​projektet øges, så er det bedre at starte med et andet bibliotek eller en ramme, der giver dig mulighed for meningsfuldt at styre kompleksiteten. Opdel for eksempel grænsefladen i komponenter. Brug af jQuery på sådanne websteder kan se fint ud i starten, men det vil hurtigt føre til spaghettikode, hvor du ikke er sikker på, hvilket fragment der påvirker hvilken del af siden.

Jeg har været i sådan en situation, når jeg prøvede at lave en ændring, føles det som en svær opgave. Du kan ikke være sikker på, at du ikke vil bryde noget, fordi jQuery-vælgere afhænger af HTML-strukturen, der genereres af serveren.

I den anden ende af skalaen er simple websteder, der kun kræver en smule interaktivitet eller dynamisk indhold. Jeg ville heller ikke bruge jQuery som standard i disse tilfælde, fordi der er så meget mere, du kan gøre med native API'er.

Selvom jeg har brug for noget mere kraftfuldt, vil jeg lede efter et specialiseret bibliotek, f.eks. Axios for Ajax eller Animate.css til animationer. Dette vil være nemmere end at indlæse alle jQuery for en lille funktionalitet.

Jeg tror, ​​at den bedste begrundelse for at bruge jQuery er, at den giver omfattende funktionalitet til frontenden af ​​et websted. I stedet for at lære en række indbyggede API'er eller specialiserede biblioteker, kan du kun læse jQuery-dokumentationen og blive produktiv med det samme.

Den imperative tilgang skalerer ikke godt, men den er lettere at lære end andre bibliotekers deklarative tilgang. For et websted med klart begrænsede muligheder er det bedre at bruge jQuery og arbejde roligt: ​​Biblioteket kræver ikke kompleks samling eller kompilering.

Derudover er jQuery godt, hvis du er sikker på, at dit websted ikke bliver mere komplekst med tiden, og hvis du er ligeglad med indbygget funktionalitet, hvilket helt sikkert vil kræve at skrive mere kode end jQuery.

Du kan også bruge dette bibliotek, hvis du har brug for at understøtte ældre versioner af IE. Så vil jQuery tjene dig som den gjorde dengang, hvor IE var den mest populære browser.

prospektering

jQuery forsvinder ikke lige nu. Hun aktivt udviklende, og mange udviklere foretrækker at bruge dens API, selvom native metoder er tilgængelige. Biblioteket har hjulpet en hel generation af udviklere med at skabe websteder, der fungerer på enhver browser. Selvom det på mange måder er blevet erstattet af nye biblioteker, rammer og paradigmer, har jQuery spillet en enormt positiv rolle i skabelsen af ​​det moderne web.

Medmindre jQuerys funktionalitet ændres væsentligt, er det sandsynligt, at brugen af ​​biblioteket vil fortsætte med at falde langsomt, men støt i løbet af de næste par år. Nye hjemmesider har en tendens til at blive bygget ved hjælp af mere moderne rammer fra starten, og egnede use cases til jQuery bliver mere og mere sjældne.

Nogle mennesker kan ikke lide den hastighed, hvormed webudviklingsværktøjer bliver forældede, men for mig er det et bevis på hurtige fremskridt. jQuery har givet os mulighed for at gøre mange ting bedre. Det samme gælder for hendes efterfølgere.

Kilde: www.habr.com

Tilføj en kommentar