Quais são as diferenças entre o pacote normal e fino de jquery?

436

No CDNJS, o pacote jquery.slim é colocado. Tem um tamanho menor. Quais são as principais diferenças de um original? Uma rápida olhada no código não trouxe a resposta, e no jquery.com não encontrei nenhuma referência sobre o slimpacote.

Então, quais são as diferenças entre jquery.js e jquery.slim.js?

SynCap
fonte
Na minha opinião, você aceitou uma resposta medíocre e deveria mudar isso.
Robert Siemer 01/04
@RobertSiemer, pode ser, mas votos de cem pessoas mostram a realidade muito claramente a tempo, na minha opinião. A resposta aceita foi completa o suficiente e oportuna e agora ainda fornece a solução curta, rápida e de uso suficiente.
SynCap
Eu discordo totalmente de você. Os votos nas respostas aceitas não indicam nada em comparação com as outras respostas abaixo (e você deve saber isso). E seja qual for a resposta feita no tempo, é completamente irrelevante para um site público de q / a. As pessoas vêm aqui agora e precisam da melhor resposta possível. Além disso: Bhojendra Rauniyar pode ficar totalmente sem esses 15 representantes. pontos.
Robert Siemer
O número absoluto de votos negativos é um indicador melhor de qualidade em comparação com outras respostas. - Acabei de perceber que a segunda resposta é realmente a mais votada, portanto não há muito mais a dizer.
Robert Siemer

Respostas:

296

Observando o código, encontrei as seguintes diferenças entre jquery.js e jquery.slim.js:

No jquery.slim.js, os seguintes recursos são removidos:

  1. jQuery.fn.extend
  2. jquery.fn.load
  3. jquery.each // Anexe várias funções para manipular eventos comuns do AJAX
  4. jQuery.expr.filters.animated
  5. configurações de ajax como jQuery.ajaxSettings.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  6. análise de xml como jQuery.parseXML,
  7. efeitos de animação como jQuery.easing, jQuery.Animation, jQuery.speed
Bhojendra Rauniyar
fonte
6
Na fonte slim 3.x, ainda estou jQuery.fn.extendsendo usado para adicionar métodos a conjuntos agrupados. Você estava se referindo a outra coisa no # 1?
Cantera
39
Vale ressaltar que o Bootstrap 4 está direcionado para a versão slim do jQ. As animações são provavelmente o maior ponto de ruptura, mas a maioria delas pode ser feita melhor e mais rapidamente usando CSS3 de qualquer maneira.
21717 Josh Habdas #
3
O que você quis dizer com "jQuery.each"? O jQuery.each não foi removido no jQuery 3 slim
Chris Moschini 7/17
18
Talvez queira editar a resposta para expressar isso de maneira diferente - dizer jquery.each aqui em uma lista do que foi removido é confuso.
Chris Moschini
1
funções como slideUp, slideDown também não funcionam com a versão slim.
Usman Arshad
317

A resposta curta retirada do anúncio da versão final do jQuery 3.0 :

Juntamente com a versão regular do jQuery que inclui os módulos ajax e efeitos, estamos lançando uma versão "slim" que exclui esses módulos. No geral, ele exclui ajax, efeitos e código atualmente obsoleto.

O tamanho do arquivo (compactado em gzip) é cerca de 6k menor, 23.6k vs 30k.

Jannie Theunissen
fonte
40

No momento, a resposta mais autorizada parece estar nesta edição , que afirma "é uma compilação personalizada do jQuery que exclui efeitos, ajax e código obsoleto". Os detalhes serão anunciados com o jQuery 3.0.

Eu suspeito que a justificativa para excluir esses componentes da biblioteca jQuery é o reconhecimento do cenário cada vez mais comum do jQuery sendo usado em conjunto com outra estrutura JS, como Angular ou React. Nesses casos, o uso do jQuery é principalmente para passagem e manipulação do DOM; portanto, deixar de fora os componentes obsoletos ou fornecidos pela estrutura obtém uma redução de cerca de 20% no tamanho do arquivo.

gxclarke
fonte
10
Também pode ser usado por desenvolvedores que usam recursos modernos, como o fetch()que é um substituto moderno para XMLHttpRequest(AJAX).
Fred
25

O blog do jQuery, jQuery 3.1.1 lançado! diz

Magro

Às vezes, você não precisa do ajax ou prefere usar uma das muitas bibliotecas independentes que se concentram nas solicitações do ajax. E, muitas vezes, é mais simples usar uma combinação de CSS e manipulação de classe para todas as suas animações na web. Juntamente com a versão regular do jQuery, que inclui os módulos ajax e efeitos, lançamos uma versão "slim" que exclui esses módulos. No geral, ele exclui ajax, efeitos e código atualmente obsoleto. Atualmente, o tamanho do jQuery raramente é um problema de desempenho de carga, mas a compilação fina é cerca de 6k bytes compactados em gzip menor que a versão normal - 23.6k vs 30k.

ChrisW
fonte
17

Eu pude ver $.ajax é removido do jQuery slim 3.2.1

Nos documentos do jQuery

Você também pode usar o slim build, que exclui os módulos ajax e efeitos

Abaixo está o comentário da versão slim com os recursos removidos

/*! 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
fonte
Qual é a alternativa ao $ .ajax?
Zyo 28/11
2
O @Zyo usa o objeto xmlhttprequest em JavaScript simples ou a versão normal do jQuery.
kiranvj
API de busca é nativa e realmente poderosa developer.mozilla.org/en-US/docs/Web/API/Fetch_API aqui como usá-la developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
Octavioamu
@Octavioamu buscar é uma opção, mas podem precisar de um polyfill assentar em navegadores
kiranvj
5

Conforme observado, os módulos Ajax e de efeitos foram excluídos do jQuery slim, a diferença de tamanho de 3.3.1 para a versão compactada descompactada é 85k vs 69k (economia de 16k para slim) ou 30vs24 para zipado, é importante observar que bootstrap 4 usa o jQuery fino , se alguém quiser a versão completa, precisará chamar isso

Yehuda Schwartz
fonte