Perché i browser non hanno jQuery installato?


19

Sto usando jQuery su molti dei miei siti Web e anche se uso un CDN per servirlo, non ha senso che il visitatore scarichi jQuery ogni volta. jQuery deve essere il framework JavaScript più utilizzato al mondo - non avrebbe più senso se i browser lo avessero installato di default?

In questo modo milioni di volte al giorno potrebbe essere impedito il download di jQuery. Dai siti Web delle persone o dai CDN.

Tutto ciò che sarebbe davvero necessario è una sorta di istruzione if come:

 <!--[if jQuery gt 11]>

Esiste qualcosa che mi aiuterà a impedire agli utenti di effettuare il viaggio verso la CDN se hanno già jQuery nella loro cache da un altro sito?


3
la domanda è: perché un utente deve effettuare nuovi download da siti o CDN per qualcosa che già possiede? jQuery viene servito da molte località e in molte versioni. Sono preoccupato per la velocità della pagina e gli utenti sono preoccupati per la larghezza di banda (soprattutto mobile). Se esiste un gold standard per una biblioteca, allora perché non usarlo? Ci sono altri esempi sicuri e ne sarei lieto anche - purché ci sia uno standard concordato per loro (come un numero di versione).
user1914292

27
Perché jQuery ma non Angular, MooTools, Underscore, ...? E quali versioni di ciascuno? I browser dovrebbero contenere copie di ogni libreria JavaScript mai realizzata?
user253751

15
"Spiacenti, non puoi utilizzare il mio sito Web fino a quando non
esegui l'


4
la cache è fatta per questo. altrimenti, la gestione della versione sarebbe praticamente impossibile
njzk2,

Risposte:


55

Se servi jQuery da un CDN popolare come Librerie ospitate di Google o cdnjs , non verrà scaricato di nuovo se il tuo visitatore è stato su un sito a cui è stato fatto riferimento dalla stessa fonte (purché la versione memorizzata nella cache non sia scaduta).

jQuery è una libreria popolare, proprio come dici tu, ma non è probabile che il raggruppamento con il browser accada per alcuni motivi:

  1. jQuery è relativamente piccolo (rispetto alle librerie che a volte sono raggruppate in browser, come Flash). È improbabile che i maggiori colli di bottiglia delle prestazioni sul sito medio siano dovuti al download di jQuery.
  2. I miglioramenti a JavaScript / ECMAScript indicano che gli sviluppatori non sono sempre più tenuti a dipendere da jQuery. (Vedi youmightnotneedjquery.com .)
  3. Ci sono molte altre librerie JavaScript popolari. I browser non sono progettati come repository per il codice JavaScript. Tracciare la popolarità degli script, eliminare le librerie meno popolari e mantenere tutto aggiornato può essere lasciato agli sviluppatori web dei singoli siti.

Lo capisco, ma ora sto usando code.jquery.com come CDN. Tuttavia, quando un altro sito Web utilizza googleapis o cdjns, il browser scaricherà nuovamente jQuery da quell'altra CDN. Questo non ha senso e costa molto tempo / larghezza di banda in tutto il luogo. Se aggiungi a questo che nella maggior parte dei casi le persone vorrebbero qualcosa come jQuery1.7 +, la situazione peggiora ancora. Capisco il tuo punto sul fatto che i browser non sono repository, ma non saremmo in grado di elaborare una sorta di regola "cache da più fonti"?
user1914292

24
@ user1914292 Questo sarebbe utile solo se tutti i browser avessero mai esistito tutte le versioni di jQuery e se intercettasse qualsiasi richiesta a qualsiasi fonte nota di jQuery, sostituendola con la versione memorizzata nella cache. Se c'è anche una piccola differenza, potrebbe causare errori che è impossibile eseguire il debug. Ciò è ulteriormente aggravato dal fatto che la memorizzazione nella cache Web funziona e ha funzionato per decenni. Il tuo browser non è l'unica cosa che memorizza nella cache quelle richieste jQuery: molti router sulla strada per il tuo browser fanno lo stesso. Il problema è stato risolto molto tempo fa, quando la larghezza di banda ha fatto importa :)
Luaan

4) Cosa succede se il codice jquery su un determinato sito dipende da una funzione che è stata sostanzialmente modificata in un recente aggiornamento e non fa più ciò che il codice si aspetta che faccia?
Shadur,

1
@ No no, non funziona come meccanismo di tracciamento perché il 99% delle volte la richiesta viene servita dalla cache del tuo browser.
Suriv,

1
@BenSteward Sì, usa gli strumenti di sviluppo del tuo browser e controlla il pannello Rete . Chrome, ad esempio, mostrerà le risorse memorizzate nella cache con “cache disco” o “cache memoria” nella colonna “dimensione” e un valore fantasma nella colonna “stato” (purché non sia presente “Disabilita cache (mentre DevTools è aperto) "attivo nelle impostazioni degli strumenti di sviluppo). Può dipendere dalle intestazioni di controllo della cache e da altri fattori su ciò che viene memorizzato nella cache e per quanto tempo. developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Nick,

21

Non solo jQuery non è l'unica libreria JS popolare, ma un browser dovrebbe potenzialmente includere più versioni. La CDN di Google attualmente elenca: 42 versioni di jQuery; 44 versioni dell'interfaccia utente di jQuery; 6 versioni di jQuery Mobile.

È meglio consentire agli sviluppatori Web di definire quale versione di una libreria scaricare in base ai requisiti del proprio sito Web. Se usi una versione di produzione corrente di jQuery sul tuo sito web e la carichi da una CDN più popolare, allora c'è una buona probabilità che i tuoi visitatori la abbiano già memorizzata nella cache.


14

Il browser è il motore che non è compito del progettista del motore scoprire che tipo di carburante e parti extra hai intenzione di mettere nella tua auto e includerlo per te. Se lo facessero, i browser sarebbero un enorme bloatware perché la domanda successiva sarà "perché solo jQuery?", E finiremmo con il mantenimento dei repository di dipendenze.

Inoltre, includeremo tutte le versioni? E se qualcuno volesse usare una versione personalizzata? E se qualcuno non volesse usare quella libreria? Con quale frequenza uniranno e rilasceranno le ultime versioni? Finiremo con browser diversi con jQuerys con versioni diverse? Non possono nemmeno implementare allo stesso modo funzionalità HTML, CSS e JavaScript standardizzate. Cosa succede se uno dei manutentori del browser non includerà una libreria o la sua versione specifica?

I browser forniscono elementi costitutivi e un ambiente per la creazione di una soluzione non già terminata.

Mettere jQuery nel browser non renderà il tuo sito incredibilmente veloce perché al giorno d'oggi questo non è il più grande collo di bottiglia, tuttavia possiamo essere d'accordo sul fatto che jQuery è una libreria inutilmente grande ma il suo scopo non è mai stato una libreria veloce (considerando larghezza di banda). Esistono molte altre librerie progettate appositamente per il caricamento rapido e per essere leggere come Zepto .

Se sei davvero così preoccupato per le dimensioni e l'utilizzo della larghezza di banda di jQuery, non usarlo. Hai mai sentito parlare di Vanilla JS ? È una libreria ancora più popolare che viene utilizzata letteralmente da quasi tutti, incluso lo stesso jQuery! E ha già realizzato il tuo sogno perché è incluso in ogni browser!


2

Un motivo per utilizzare una libreria come jQuery è la compatibilità.

I browser sono diventati più conformi agli standard, ma utilizzando la libreria jquery, ti fornisci te stesso, non devi preoccuparti delle differenze tra le famiglie di browser e le versioni

Fornendo tu stesso il jquery, avrai sicuramente un'API coerente.

Se abbiamo il jquery integrato nel browser, devi controllare quale versione ha l'utente e torniamo al browser browser e "Questo sito è meglio visualizzato in ..."

Quindi avere jquery compilato nel browser non ha senso.

Inoltre, la memorizzazione nella cache funziona, quindi anche se l'utente non ha già la tua versione jquery, deve essere scaricato solo una volta.


-3

In realtà penso che i rispondenti qui non riescano a capire che la risposta alla domanda è che i browser probabilmente dovrebbero cercare di includere le librerie più utilizzate, i polyfill ecc. Sul lato client.

Come afferma la persona che pone la domanda, è possibile utilizzare i commenti condizionali per garantire che a coloro che utilizzano browser che non includono jquery sia stata fornita una versione appropriata.

Jquery include anche il proprio supporto per la retrocompatibilità attraverso la migrazione, consentendo commenti condizionali per fornire un supporto retro per qualcuno con una versione impacchettata di una libreria jquery precedente senza scaricare una libreria completamente nuova.

L'argomento PER includerli nei browser non riguarderebbe solo l'esperienza e il costo degli utenti, ma anche il pianeta su cui viviamo. L'uso dei dati è un enorme contributo all'inquinamento globale e garantire che il trasferimento inutile di dati sia ridotto al minimo potrebbe avere un effetto drammatico sulla nostra impronta di carbonio.

In sostanza per l'aggiunta di qualche megabyte di codice in un browser impacchettato - gli stessi dati vengono inutilmente trasferiti miliardi di volte al giorno.

Ciò peggiora l'esperienza dell'utente per tutti su Internet. E costa alle grandi aziende enormi quantità di denaro.

Come sviluppatore creeresti semplicemente i fallback necessari come facciamo attualmente per IE ecc., Quindi qual è il problema - probabilmente dovrebbe essere incluso sicuramente?


1
Questo è tangenziale alla domanda. La domanda è "perché non i browser e cosa posso fare al riguardo", non "perché i browser dovrebbero".
Stephen Ostermiller

L'OP, pur riflettendo sul tuo punto, è interessato a ridurre il traffico verso la CDN se il framework esiste già nella cache del browser, probabilmente anche da un altro sito. Personalmente, non riesco a vedere come, a meno che non esista un modo comune di fare riferimento al framework.
closetnoc,

La maggior parte delle persone non è riuscita a dire anche la risposta più pertinente alla domanda e che jQuery non è uno standard Web e i browser eseguono solo standard Web che cambiano lentamente e si basano sui fondamenti. jQuery è stato originariamente creato per far funzionare i fondamenti in modo coerente tra i browser, quindi includere jQuery è come includere una patch per correggere i browser, ma i browser si risolvono già da soli alla fine. Già vediamo l'uso ridotto di jQuery come parzialmente dimostrato dai numerosi articoli "Non hai bisogno di jQuery" in questi giorni.
Rob,

Stefano. Il quesiton non è "perché non i browser e cosa posso fare al riguardo". Questo è il tuo rehash di esso. La domanda è: perché non lo fanno, e la persona che chiede chiaramente afferma che semplicemente fare questo e creare un nuovo framework per affrontare i problemi che sorgono avrebbe effettivamente un enorme vantaggio potenziale per tutti gli utenti web.
Andy Bbop,

Tutti voi dovete smettere di difendere i vostri preconcetti superati e accettare di poter ancora imparare. Oh, e anche imparare a leggere davvero qualcosa. #Armi. "L'OP, pur riflettendo sul tuo punto, è interessato a ridurre il traffico verso la CDN". No, dice che potrebbe risparmiare enormi quantità di larghezza di banda sia sul lato client che su CDN. Leggi il post di effing.
Andy Bbop,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.