Historien og arven af jQuery

Historien og arven af jQuery
jQuery — det mest populære 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 (John Resig) skabte den første version af biblioteket i 2005, og offentliggjorde det i 2006-en på et arrangement kaldet BarCampNYC. På den officielle jQuery-hjemmeside 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 Sizzle.

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å denne tidlige kildekode af jQuery 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 74 % af hjemmesiderne i dag bruger jQuery.

Kontrollen over udviklingen af jQuery blev også mere formaliseret. I 2011 skabte teamet jQuery Board. Og i 2012 blev jQuery Board til jQuery Foundation.

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

Skiftende omstændigheder

Men i de seneste år har jQuery mistet sin popularitet. GitHub fjernede biblioteket fra frontenden på sin hjemmeside. Bootstrap v5 fjerner jQuery, fordi det er dens "største klientafhængighed for almindelig JavaScript" (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 web-standarder i rammerne af Web Hypertext Application Technology Working Group.
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 en vedvarende krig mod hinanden. Følgelig har browser-API'er fået nye muligheder. For eksempel Fetch API 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 querySelector og querySelectorAll 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 classList:

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

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

På hjemmesiden Du Har Måske Ikke Brug For jQuery 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 animations effekter fra jQuery kan nu implementeres meget mere effektivt ved hjælp af CSS.

Den anden årsag er, at browsere opdateres meget hurtigere end tidligere. De fleste bruger "evergreen" opdateringsstrategi, 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 Can I Use 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, ved at stoppe med at understøtte 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 version 2.0, 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 React, Angular og Vue. 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 axios til Ajax eller Animate.css 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 udvikler sig aktivt, 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

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster