Storia e patrimonio di jQuery

Storia e patrimonio di jQuery
jQuery — è la libreria JavaScript più popolare al mondo. È stata creata dalla comunità dei web developer alla fine degli anni 2000, dando origine a un'ampia ecosistema di siti, plugin e framework che utilizzano jQuery.

Tuttavia, negli ultimi anni il suo status di strumento principale per lo sviluppo web è stato messo in discussione. Vediamo perché jQuery è diventata popolare e perché è uscita di moda, oltre ai casi in cui è ancora opportuno utilizzarla per creare siti moderni.

Storia breve di jQuery

John Resig (John Resig) ha creato la prima versione della libreria nel 2005 e l'ha pubblicata nel 2006- in un evento chiamato BarCampNYC. Sul sito ufficiale di jQuery l'autore ha scritto:

jQuery è una libreria JavaScript il cui motto è: Programmare in JavaScript deve essere un piacere. jQuery prende compiti frequenti e ripetitivi, estrae tutto il markup non necessario e li rende brevi, eleganti e comprensibili.

jQuery ha due principali vantaggi. Il primo è una API conveniente per manipolare le pagine web. In particolare, fornisce potenti metodi per selezionare elementi. È possibile scegliere non solo per ID o classi, ma jQuery consente di scrivere espressioni complesse, ad esempio per selezionare elementi in base alle loro relazioni con altri elementi:

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

Nel tempo, il meccanismo di selezione si è trasformato in una libreria autonoma Sizzle.

Il secondo vantaggio della libreria era che astraeva le differenze tra i browser. All'epoca, era difficile scrivere codice in grado di funzionare affidabilmente su tutti i browser.

La mancanza di standardizzazione significava che gli sviluppatori dovevano tenere conto delle numerose differenze tra i browser e dei casi limite. Dai un'occhiata a questo codice sorgente iniziale di jQuery e cerca jQuery.browser. Ecco uno dei esempi:

// 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);
}

E grazie a jQuery, gli sviluppatori potevano delegare le preoccupazioni su tutte queste insidie al team che sviluppava la libreria.

In seguito, jQuery ha semplificato l'implementazione di tecnologie più complesse, come animazioni e Ajax. La libreria è diventata praticamente uno standard per le dipendenze dei siti web. Oggi, essa rappresenta una parte sostanziale di Internet. W3Techs stima che il 74% dei siti web utilizzi jQuery.

Il controllo sullo sviluppo di jQuery è diventato anche più strutturato. Nel 2011, il team ha creato il jQuery Board. E nel 2012, il jQuery Board si è trasformato nella jQuery Foundation.

. Nel 2015, la jQuery Foundation si è unita alla Dojo Foundation, per creare la JS Foundation, che poi si è unita con la Node.js Foundation nel 2019-mo per formare l'OpenJS Foundation, all'interno della quale jQuery è stata uno dei «progetti pionieristici

Le circostanze in cambiamento

Tuttavia, negli ultimi anni jQuery ha perso parte della sua popolarità. GitHub ha rimosso la libreria dal frontend del suo sito. Bootstrap v5 si libererà di jQuery, poiché è la sua «principale dipendenza cliente per il JavaScript normale» (attualmente di 30 KB, minificata e compressa). Diversi trend nello sviluppo web hanno indebolito la posizione di jQuery come strumento necessario.

Browser

Per diverse ragioni, le differenze e le limitazioni dei browser sono diventate meno rilevanti. In primo luogo, la standardizzazione è migliorata. I principali sviluppatori di browser (Apple, Google, Microsoft e Mozilla) collaborano nello sviluppo degli standard web nell'ambito di Web Hypertext Application Technology Working Group.
Sebbene i browser continuino a differire in alcuni aspetti importanti, i fornitori hanno almeno un mezzo per cercare e creare una base comune invece di una guerra perenne tra di loro. Di conseguenza, le API dei browser hanno acquisito nuove opportunità. Ad esempio, Fetch API è in grado di sostituire le funzioni Ajax di 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);
    });

I metodi querySelector e querySelectorAll duplicano gli strumenti di selezione di jQuery:

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

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

Ora è possibile manipolare le classi degli elementi tramite classList:

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

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

Sul sito You Might Not Need jQuery sono elencate altre situazioni in cui il codice jQuery può essere sostituito con codice nativo. Alcuni sviluppatori continuano a utilizzare jQuery semplicemente perché non conoscono le nuove API, ma una volta informati, iniziano a utilizzare questa libreria meno frequentemente.

L'uso delle funzionalità native consente di migliorare le prestazioni delle pagine. Molti effetti di animazione di jQuery possono ora essere implementati in modo molto più efficace utilizzando CSS.

Il secondo motivo è che i browser vengono aggiornati molto più rapidamente rispetto al passato. La maggior parte di essi adotta una strategia di aggiornamento "evergreen", ad eccezione di Apple Safari. Possono aggiornarsi in background senza richiedere l’intervento dell’utente e non sono legati agli aggiornamenti del sistema operativo.

Ciò significa che le nuove funzionalità dei browser e le correzioni di bug vengono distribuite molto più rapidamente, e gli sviluppatori non devono aspettare che la quota Can I Use raggiunga un livello accettabile. Possono utilizzarle con fiducia senza dover caricare jQuery o polyfill.

Il terzo motivo è che Internet Explorer sta per diventare completamente obsoleto. IE è stato a lungo il tallone d’Achille dello sviluppo web in tutto il mondo. I suoi tipi di bug erano molto comuni, e poiché IE ha dominato negli anni 2000 e non ha utilizzato la strategia di aggiornamento "evergreen", le sue vecchie versioni sono ancora frequenti.

Nel 2016, Microsoft ha accelerato il ritiro di IE dalla circolazione, cessando il supporto versioni anteriori e inferiori, limitandosi al supporto di IE 11. Sempre più spesso, gli sviluppatori web possono permettersi il lusso di ignorare la compatibilità con IE.

Anche jQuery ha smesso di supportare IE 8 e versioni precedenti a partire da versione 2.0, rilasciata nel 2013. Sebbene in alcuni casi sia ancora necessaria la compatibilità con IE, ad esempio su siti web obsoleti, queste situazioni si verificano sempre più raramente.

Nuovi framework

Da quando è stato introdotto jQuery, sono stati creati numerosi framework, inclusi i moderni leader React, Angular e Vue. Hanno due importanti vantaggi rispetto a jQuery.

Innanzitutto, consentono di dividere facilmente l'interfaccia utente in componenti. I framework sono progettati per gestire il rendering e l'aggiornamento della pagina. Mentre jQuery viene solitamente utilizzato solo per aggiornamenti, lasciando al server il compito di fornire la pagina iniziale.

D'altra parte, i componenti di React, Angular e Vue consentono di collegare strettamente HTML, codice e persino CSS. Proprio come dividiamo il codice in molte funzioni e classi autosufficienti, la possibilità di dividere l'interfaccia in componenti riutilizzabili semplifica la costruzione e la manutenzione di siti complessi.

Il secondo vantaggio è che i framework più recenti seguono un paradigma dichiarativo, in cui lo sviluppatore descrive come dovrebbe apparire l'interfaccia, mentre il framework si occupa di effettuare tutte le modifiche necessarie per raggiungere l'aspetto desiderato. Questo approccio è in contraddizione con l'approccio imperativo tipico del codice jQuery.

In jQuery, devi esplicitamente scrivere i passaggi per effettuare le modifiche. In un framework dichiarativo, invece, dici: «In base a questi dati, l'interfaccia dovrebbe apparire in questo modo». Questo può semplificare notevolmente la scrittura di codice privo di bug.

Gli sviluppatori hanno adottato nuovi approcci alla creazione di siti web, il che ha portato a una diminuzione della popolarità di jQuery.

Quando utilizzare jQuery?

Quindi, quando è necessario dovresti utilizzare jQuery?

Se la complessità del progetto aumenta, è meglio iniziare con un'altra libreria o framework che consenta di gestire la complessità in modo significativo. Ad esempio, suddividere l'interfaccia in componenti. L'uso di jQuery in tali siti potrebbe sembrare accettabile all'inizio, ma porterà rapidamente a codice spaghetti, dove non si sarà certi di quale frammento influenzi quale parte della pagina.

Mi sono trovato in una situazione del genere; nel tentativo di apportare qualsiasi modifica, si ha la sensazione di affrontare un compito difficile. Non si può essere certi di non rompere nulla, poiché i selettori jQuery dipendono dalla struttura HTML generata dal server.

All'altro estremo ci sono siti semplici, che richiedono solo un po' di interattività o contenuto dinamico. In questi casi, non userei jQuery per default, perché con le API native si possono fare molte più cose.

Anche se avessi bisogno di qualcosa di più potente, cercherei una libreria specializzata, ad esempio, axios per Ajax o Animate.css per le animazioni. Sarà più semplice che caricare tutto jQuery per una funzionalità ridotta.

Credo che la migliore giustificazione per l'uso di jQuery sia il fatto che offre una funzionalità completa per lavorare sul front-end del sito. Invece di studiare i diversi API nativi o librerie specializzate, puoi semplicemente leggere la documentazione di jQuery e diventare subito produttivo.

L'approccio imperativo scalda male, ma è più facile da padroneggiare rispetto all'approccio dichiarativo di altre librerie. Per un sito con capacità decisamente limitate, è meglio utilizzare jQuery e lavorare tranquillamente: la libreria non richiede una costruzione o una compilazione complesse.

Inoltre, jQuery è utile se sei sicuro che il sito non diventerà complicato nel tempo e se non ti preoccupa la funzionalità nativa, che richiederà senza dubbio la scrittura di più codice rispetto a jQuery.

Puoi anche utilizzare questa libreria se hai bisogno di supportare le versioni obsolete di IE. In tal caso, jQuery ti supporterà come ai tempi in cui IE era il browser più popolare.

Uno sguardo al futuro

jQuery non scomparirà presto. Essa è in continua evoluzione, e molti sviluppatori preferiscono utilizzare la sua API, anche con l'accesso a metodi nativi. La libreria ha aiutato un'intera generazione di sviluppatori a creare siti web funzionanti su qualsiasi browser. E anche se in molti aspetti è stata sostituita da nuove librerie, framework e paradigmi, jQuery ha giocato un enorme ruolo positivo nella creazione del web moderno.

Se la funzionalità di jQuery non cambia sostanzialmente, è molto probabile che nei prossimi anni l'uso della libreria continui a diminuire lentamente ma inesorabilmente. I nuovi siti web vengono generalmente creati fin dall'inizio utilizzando framework più moderni, e i casi d'uso adatti per jQuery si stanno facendo sempre più rari.

A qualcuno non piace l'intensità con cui gli strumenti per lo sviluppo web diventano obsoleti, ma per me è una testimonianza del rapido progresso. jQuery ci ha permesso di fare molte cose meglio. Lo stesso vale per i suoi successori.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster