Quali sono le differenze tra il pacchetto normale e sottile di jquery?


436

In CDNJS viene inserito il pacchetto jquery.slim. Ha una dimensione inferiore. Quali sono le principali differenze rispetto a un originale? Una rapida occhiata al codice non ha portato la risposta, e su jquery.com non ho trovato alcun riferimento sul slimpacchetto.

Quindi, quali sono le differenze tra jquery.js e jquery.slim.js?



A mio avviso, hai accettato una risposta mediocre e dovresti cambiarla.
Robert Siemer,

@RobertSiemer, può essere, ma i voti di centinaia di persone mostrano attualità molto chiaramente nel tempo a mio avviso. La risposta accettata è stata abbastanza completa e tempestiva e ora offre ancora la soluzione breve, rapida e sufficiente.
SynCap il

Non sono assolutamente d'accordo con te. I voti sulle risposte accettate non indicano nulla rispetto alle altre risposte di seguito (e dovresti saperlo). E qualunque cosa la risposta abbia fatto indietro nel tempo è completamente irrilevante per un sito Web pubblico. Le persone vengono qui adesso e hanno bisogno della migliore risposta possibile. Inoltre: Bhojendra Rauniyar può assolutamente fare a meno di quei 15 rappresentanti. punti.
Robert Siemer,

Il numero assoluto di voti negativi è un indicatore migliore della qualità rispetto ad altre risposte. Ho appena realizzato che la seconda risposta è in realtà la più votata, quindi non c'è molto altro da dire.
Robert Siemer,

Risposte:


296

Guardando il codice ho trovato le seguenti differenze tra jquery.js e jquery.slim.js:

In jquery.slim.js, vengono rimosse le seguenti funzionalità:

  1. jQuery.fn.extend
  2. jquery.fn.load
  3. jquery.each // Allega una serie di funzioni per la gestione di eventi AJAX comuni
  4. jQuery.expr.filters.animated
  5. impostazioni ajax come jQuery.ajaxSettings.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  6. analisi XML come jQuery.parseXML,
  7. effetti di animazione come jQuery.easing, jQuery.Animation, jQuery.speed

6
Nella sorgente slim 3.x, sto ancora vedendo l' jQuery.fn.extendessere usato per aggiungere metodi a set avvolti. Ti riferivi a qualcos'altro nel n. 1?
cantera,

39
Vale la pena notare che Bootstrap 4 ha come obiettivo la versione jQ slim. Le animazioni sono probabilmente il principale punto di rottura, ma la maggior parte di esse può comunque essere eseguita meglio e più velocemente utilizzando CSS3.
Josh Habdas,

3
Cosa intendevi con "jQuery.each"? jQuery.each non è stato rimosso in jQuery 3 slim
Chris Moschini il

18
Potrebbe voler modificare la risposta per esprimerla diversamente: dire jquery.each qui in un elenco di ciò che è stato rimosso è fonte di confusione.
Chris Moschini,

1
funzioni come slideUp, slideDown non funzionano anche con la versione slim.
Usman Arshad,

317

La breve risposta tratta dall'annuncio della versione finale di jQuery 3.0 :

Insieme alla versione normale di jQuery che include i moduli ajax ed effetti, stiamo rilasciando una versione "slim" che esclude questi moduli. Tutto sommato, esclude ajax, effetti e codice attualmente deprecato.

La dimensione del file (con gzip) è circa 6k più piccola, 23,6k contro 30k.


40

In questo momento, la risposta più autorevole sembra essere in questo problema , che afferma "è una build personalizzata di jQuery che esclude effetti, ajax e codice deprecato". I dettagli saranno resi noti con jQuery 3.0.

Ho il sospetto che la logica per escludere questi componenti della libreria jQuery sia in riconoscimento dello scenario sempre più comune di jQuery utilizzato in congiunzione con un altro framework JS come Angular o React. In questi casi, l'utilizzo di jQuery è principalmente per l'attraversamento e la manipolazione del DOM, quindi tralasciando quei componenti obsoleti o forniti dal framework si ottiene una riduzione del 20% circa delle dimensioni del file.


10
Può essere utilizzato anche dagli sviluppatori che utilizzano funzionalità moderne come fetch()la sostituzione moderna di XMLHttpRequest(AJAX).
Fred,

25

Il blog jQuery, jQuery 3.1.1 Rilasciato! , dice,

Corporatura snella

A volte non hai bisogno di Ajax, o preferisci usare una delle tante librerie autonome che si concentrano su richieste Ajax. E spesso è più semplice utilizzare una combinazione di CSS e manipolazione di classi per tutte le animazioni Web. Insieme alla versione normale di jQuery che include i moduli ajax ed effetti, abbiamo rilasciato una versione "slim" che esclude questi moduli. Tutto sommato, esclude ajax, effetti e codice attualmente deprecato. Le dimensioni di jQuery sono molto raramente un problema di prestazioni di carico in questi giorni, ma la build slim è di circa 6k byte gzip più piccoli rispetto alla versione normale - 23,6k vs 30k.


17

Ho visto che $.ajaxè stato rimosso da jQuery slim 3.2.1

Dai documenti di jQuery

Puoi anche usare la versione slim, che esclude i moduli ajax ed effetti

Di seguito è riportato il commento dalla versione slim con le funzionalità rimosse

/*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */

Qual è l'alternativa a $ .ajax?
Zyo,

2
@Zyo usa l'oggetto xmlhttprequest in JavaScript o usa la versione normale di jQuery.
kiranvj,


@Octavioamu fetch è un'opzione, ma potrebbe essere necessario un polyfill basato sui browser di supporto
kiranvj

5

Come notato l'Ajax e i moduli di effetti sono stati esclusi da jQuery slim la differenza di dimensioni a partire da 3.3.1 per la versione ridotta decompressa è 85k contro 69k (risparmio di 16k per slim) o 30vs24 per zippato, è importante notare che bootstrap 4 usa il jQuery sottile, quindi se qualcuno vuole la versione completa devono chiamarlo invece

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.