¿Cuáles son las diferencias entre el paquete normal y delgado de jquery?

436

En CDNJS se coloca el paquete jquery.slim. Tiene un tamaño más pequeño. ¿Cuáles son las principales diferencias con respecto a un original? Un vistazo rápido al código no trajo la respuesta, y en jquery.com no he encontrado ninguna referencia sobre el slimpaquete.

Entonces, ¿cuáles son las diferencias entre jquery.js y jquery.slim.js?

SynCap
fuente
En mi opinión, aceptó una respuesta mediocre y debería cambiarla.
Robert Siemer
@RobertSiemer, puede ser, pero los votos de cientos de personas muestran la actualidad muy claramente en el tiempo en mi opinión. La respuesta aceptada fue lo suficientemente completa y oportuna, y ahora sigue dando la solución breve, rápida y suficiente.
SynCap
Estoy totalmente en desacuerdo contigo. Los votos sobre las respuestas aceptadas no indican nada en comparación con otras respuestas a continuación (y debe saberlo). Y lo que sea que la respuesta haya hecho en el tiempo es completamente irrelevante para un sitio web público q / a. La gente viene aquí ahora y necesita la mejor respuesta posible. Además: Bhojendra Rauniyar puede prescindir totalmente de esos 15 rep. puntos.
Robert Siemer
El número absoluto de votos negativos es un mejor indicador de calidad en comparación con otras respuestas. Me acabo de dar cuenta de que la segunda respuesta es en realidad la más votada, por lo que no hay mucho más que decir.
Robert Siemer

Respuestas:

296

Al mirar el código, encontré las siguientes diferencias entre jquery.js y jquery.slim.js:

En jquery.slim.js, se eliminan las siguientes características:

  1. jQuery.fn.extend
  2. jquery.fn.load
  3. jquery.each // Adjunte un montón de funciones para manejar eventos AJAX comunes
  4. jQuery.expr.filters.animated
  5. configuraciones de ajax como jQuery.ajaxSettings.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  6. análisis XML como jQuery.parseXML,
  7. efectos de animación como jQuery.easing, jQuery.Animation, jQuery.speed
Bhojendra Rauniyar
fuente
66
En la fuente delgada 3.x, todavía veo que jQuery.fn.extendse usa para agregar métodos a conjuntos envueltos. ¿Te referías a otra cosa en el n. ° 1?
cantera
39
Vale la pena señalar que Bootstrap 4 apunta a la versión delgada de jQ. Las animaciones son probablemente el mayor punto de ruptura, pero la mayoría de ellas se pueden hacer mejor y más rápido usando CSS3 de todos modos.
Josh Habdas
3
¿Qué quisiste decir con "jQuery.each"? jQuery.each no se ha eliminado en jQuery 3 slim
Chris Moschini
18
Es posible que desee editar la respuesta para expresar esto de manera diferente, diciendo jquery. Cada uno aquí en una lista de lo que se elimina es confuso.
Chris Moschini
1
funciones como slideUp, slideDown tampoco funcionan con la versión delgada.
Usman Arshad
317

La breve respuesta tomada del anuncio del lanzamiento final de jQuery 3.0 :

Junto con la versión regular de jQuery que incluye los módulos ajax y de efectos, estamos lanzando una versión "delgada" que excluye estos módulos. En general, excluye ajax, los efectos y el código actualmente en desuso.

El tamaño del archivo (comprimido) es aproximadamente 6k más pequeño, 23.6k vs 30k.

Jannie Theunissen
fuente
40

En este momento, la respuesta más autorizada parece estar en este problema , que establece que "es una compilación personalizada de jQuery que excluye efectos, ajax y código obsoleto". Los detalles se anunciarán con jQuery 3.0.

Sospecho que la razón para excluir estos componentes de la biblioteca jQuery es reconocer el escenario cada vez más común de que jQuery se usa junto con otro marco JS como Angular o React. En estos casos, el uso de jQuery es principalmente para atravesar y manipular DOM, por lo que si se omiten aquellos componentes que son obsoletos o que proporciona el marco, se obtiene una reducción de aproximadamente un 20% en el tamaño del archivo.

gxclarke
fuente
10
También puede ser utilizado por desarrolladores que usan características modernas como fetch()cuál es un reemplazo moderno para XMLHttpRequest(AJAX).
Fred
25

¡El blog jQuery, jQuery 3.1.1 lanzado! , dice,

Complexión delgada

A veces no necesita ajax, o prefiere usar una de las muchas bibliotecas independientes que se centran en las solicitudes de ajax. Y a menudo es más simple usar una combinación de CSS y manipulación de clases para todas sus animaciones web. Junto con la versión regular de jQuery que incluye los módulos ajax y de efectos, hemos lanzado una versión "delgada" que excluye estos módulos. En general, excluye ajax, los efectos y el código actualmente en desuso. El tamaño de jQuery rara vez es un problema de rendimiento de carga en estos días, pero la construcción delgada es aproximadamente 6k bytes comprimidos más pequeños que la versión normal: 23.6k frente a 30k.

ChrisW
fuente
17

Pude ver que $.ajaxse eliminó de jQuery slim 3.2.1

De los documentos de jQuery

También puede usar la construcción delgada, que excluye los módulos ajax y de efectos

A continuación se muestra el comentario de la versión delgada con las características eliminadas

/*! 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
fuente
¿Cuál es la alternativa a $ .ajax?
Zyo
2
@Zyo usa el objeto xmlhttprequest en JavaScript simple o usa la versión normal de jQuery.
kiranvj
@Octavioamu fetch es una opción, pero puede necesitar un polyfill basado en navegadores compatibles
kiranvj
5

Como se señaló, los módulos de efectos y Ajax se han excluido de jQuery slim, la diferencia de tamaño a partir de 3.3.1 para la versión reducida descomprimida es 85k vs 69k (ahorro de 16k para slim) o 30vs24 para zip, es importante tener en cuenta que bootstrap 4 utiliza el delgado jQuery, así que si alguien quiere la versión completa, debe llamar a eso

Yehuda Schwartz
fuente