Quelles sont les différences entre le package normal et slim de jquery?

436

Au CDNJS, le paquet jquery.slim est placé. Il a une taille plus petite. Quelles sont les principales différences par rapport à un original? Un rapide coup d'œil au code n'a pas apporté la réponse, et sur jquery.com, je n'ai trouvé aucune référence à propos du slimpackage.

Alors, quelles sont les différences entre jquery.js et jquery.slim.js?

SynCap
la source
À mon avis, vous avez accepté une réponse médiocre et devriez changer cela.
Robert Siemer
@RobertSiemer, peut-être, mais les votes de cent personnes montrent l'actualité très clairement dans le temps à mon avis. La réponse acceptée était suffisamment complète et opportune et donne toujours la solution courte, rapide et suffisante.
SynCap
Je ne suis pas du tout d'accord avec toi. Les votes sur les réponses acceptées n'indiquent rien par rapport aux autres réponses ci-dessous (et vous devez le savoir). Et quoi que la réponse ait fait dans le temps est totalement hors de propos pour un site Web public q / a. Les gens viennent ici maintenant et ont besoin de la meilleure réponse possible. De plus: Bhojendra Rauniyar peut totalement se passer de ces 15 représentants. points.
Robert Siemer
Le nombre absolu de votes négatifs est un meilleur indicateur de la qualité par rapport aux autres réponses. - Je viens de réaliser que la deuxième réponse est en fait la plus votée, il n'y a donc pas grand-chose de plus à dire.
Robert Siemer

Réponses:

296

En regardant le code, j'ai trouvé les différences suivantes entre jquery.js et jquery.slim.js:

Dans jquery.slim.js, les fonctionnalités suivantes sont supprimées:

  1. jQuery.fn.extend
  2. jquery.fn.load
  3. jquery.each // Attache un tas de fonctions pour gérer les événements AJAX courants
  4. jQuery.expr.filters.animated
  5. paramètres ajax comme jQuery.ajaxSettings.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  6. analyse XML comme jQuery.parseXML,
  7. effets d'animation comme jQuery.easing, jQuery.Animation, jQuery.speed
Bhojendra Rauniyar
la source
6
Dans la source slim 3.x, je vois toujours jQuery.fn.extendêtre utilisé pour ajouter des méthodes à des ensembles encapsulés. Faites-vous allusion à autre chose au n ° 1?
cantera
39
Il convient de noter que Bootstrap 4 cible la version jQ slim. Les animations sont probablement le plus gros point de rupture, mais la plupart d'entre elles peuvent être faites mieux et plus rapidement en utilisant CSS3 de toute façon.
Josh Habdas
3
Que vouliez-vous dire par "jQuery.each"? jQuery.each n'a pas été supprimé dans jQuery 3 slim
Chris Moschini
18
Pourrait vouloir modifier la réponse pour exprimer cela différemment - dire jquery.each ici dans une liste de ce qui est supprimé est source de confusion.
Chris Moschini
1
des fonctions comme slideUp, slideDown ne fonctionnent pas non plus avec la version slim.
Usman Arshad
317

La réponse courte tirée de l' annonce de la version finale de jQuery 3.0 :

Parallèlement à la version régulière de jQuery qui inclut les modules ajax et effets, nous publions une version «slim» qui exclut ces modules. Dans l'ensemble, il exclut ajax, les effets et le code actuellement obsolète.

La taille du fichier (gzippé) est environ 6k plus petite, 23,6k vs 30k.

Jannie Theunissen
la source
40

À l'heure actuelle, la réponse la plus fiable semble se trouver dans ce problème , qui indique «qu'il s'agit d'une version personnalisée de jQuery qui exclut les effets, ajax et le code obsolète». Les détails seront annoncés avec jQuery 3.0.

Je soupçonne que la justification de l'exclusion de ces composants de la bibliothèque jQuery est en reconnaissance du scénario de plus en plus courant de jQuery utilisé en conjonction avec un autre cadre JS comme Angular ou React. Dans ces cas, l'utilisation de jQuery est principalement destinée à la traversée et à la manipulation du DOM, donc le fait de laisser de côté les composants obsolètes ou fournis par le framework permet une réduction d'environ 20% de la taille du fichier.

gxclarke
la source
10
Peut également être utilisé par les développeurs qui utilisent des fonctionnalités modernes telles que fetch()qui est un remplacement moderne de XMLHttpRequest(AJAX).
Fred
25

Le blog jQuery, jQuery 3.1.1 est disponible! , dit,

Fine construction

Parfois, vous n'avez pas besoin d'ajax, ou vous préférez utiliser l'une des nombreuses bibliothèques autonomes qui se concentrent sur les demandes ajax. Et souvent, il est plus simple d'utiliser une combinaison de CSS et de manipulation de classe pour toutes vos animations Web. Parallèlement à la version régulière de jQuery qui inclut les modules ajax et effets, nous avons publié une version «slim» qui exclut ces modules. Dans l'ensemble, il exclut ajax, les effets et le code actuellement obsolète. La taille de jQuery est très rarement un problème de performances de charge de nos jours, mais la construction mince est environ 6 Ko octets gzippés plus petite que la version régulière - 23,6 Ko contre 30 Ko.

ChrisW
la source
17

je pourrais voir $.ajax est supprimé de jQuery slim 3.2.1

Depuis les documents jQuery

Vous pouvez également utiliser la construction slim, qui exclut les modules ajax et effets

Voici le commentaire de la version slim avec les fonctionnalités supprimées

/*! 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 */
kiranvj
la source
Quelle est l'alternative à $ .ajax?
Zyo
2
@Zyo utilise l'objet xmlhttprequest en JavaScript simple ou utilise la version normale de jQuery.
kiranvj
L'API fetch est native et vraiment puissante developer.mozilla.org/en-US/docs/Web/API/Fetch_API ici comment l'utiliser developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
Octavioamu
@Octavioamu fetch est une option, mais peut nécessiter un polyfill basé sur les navigateurs pris en charge
kiranvj
5

Comme indiqué, les modules Ajax et effets ont été exclus de jQuery slim, la différence de taille à partir de 3.3.1 pour la version minifiée décompressée est de 85k contre 69k (16k d'économie pour slim) ou 30vs24 pour zippé, il est important de noter que bootstrap 4 utilise le jQuery mince, donc si quelqu'un veut la version complète, il doit l'appeler à la place

Yehuda Schwartz
la source