Jakie są różnice między normalnym a cienkim pakietem jquery?

436

Na CDNJS umieszczona jest paczka jquery.slim. Ma mniejszy rozmiar. Jakie są główne różnice w stosunku do oryginału? Szybkie spojrzenie na kod nie przyniosło odpowiedzi, a na stronie jquery.com nie znalazłem żadnego odniesienia do slimpakietu.

Więc jakie są różnice między jquery.js i jquery.slim.js?

SynCap
źródło
Moim zdaniem przyjąłeś przeciętną odpowiedź i powinieneś to zmienić.
Robert Siemer
@RobertSiemer, być może, ale głosy setek ludzi pokazują moim zdaniem rzeczywistość w czasie wyraźnie. Zaakceptowana odpowiedź była wystarczająco kompletna i aktualna, a teraz nadal daje krótkie, szybkie i wystarczające rozwiązanie.
SynCap
Całkowicie się z tobą nie zgadzam. Głosy na zaakceptowane odpowiedzi nic nie wskazują w porównaniu do innych odpowiedzi poniżej (i powinieneś o tym wiedzieć). I cokolwiek odpowiedź zrobiła w czasie, jest zupełnie nieistotna dla publicznej witryny typu q / a. Ludzie przychodzą tutaj teraz i potrzebują najlepszej możliwej odpowiedzi. Ponadto: Bhojendra Rauniyar może całkowicie obejść się bez tych 15 powtórzeń. zwrotnica.
Robert Siemer
Bezwzględna liczba głosów negatywnych jest lepszym wskaźnikiem jakości w porównaniu z innymi odpowiedziami. - Właśnie zdałem sobie sprawę, że druga odpowiedź jest w rzeczywistości najczęściej głosowana, więc nie ma nic więcej do powiedzenia.
Robert Siemer

Odpowiedzi:

296

Patrząc na kod, zauważyłem następujące różnice między jquery.js i jquery.slim.js:

W pliku jquery.slim.js usunięto następujące funkcje:

  1. jQuery.fn.extend
  2. jquery.fn.load
  3. jquery.each // Dołącz kilka funkcji do obsługi typowych zdarzeń AJAX
  4. jQuery.expr.filters.animated
  5. ustawienia ajax, takie jak jQuery.ajaxSettings.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  6. parsowanie xml jak jQuery.parseXML,
  7. efekty animacji, takie jak jQuery.easing, jQuery.Animation, jQuery.speed
Bhojendra Rauniyar
źródło
6
W cienkim źródle 3.x nadal widzę, że jestem jQuery.fn.extendwykorzystywany do dodawania metod do opakowanych zestawów. Czy miałeś na myśli coś innego w punkcie 1?
cantera
39
Warto zauważyć, że Bootstrap 4 jest ukierunkowany na wersję slim jQ. Animacje są prawdopodobnie największym punktem zerwania, ale większość z nich można zrobić lepiej i szybciej za pomocą CSS3.
Josh Habdas
3
Co miałeś na myśli przez „jQuery.each”? jQuery.each nie został usunięty w jQuery 3 slim
Chris Moschini
18
Może chcesz edytować odpowiedź, aby wyrazić to inaczej - powiedzenie jquery.each tutaj na liście usuniętych jest mylące.
Chris Moschini,
1
funkcje takie jak slideUp, slideDown również nie działają w wersji slim.
Usman Arshad
316

Krótka odpowiedź zaczerpnięta z ogłoszenia ostatecznej wersji jQuery 3.0 :

Wraz ze zwykłą wersją jQuery, która zawiera moduły ajax i efekty, wypuszczamy „wąską” wersję, która wyklucza te moduły. Podsumowując, wyklucza to ajax, efekty i obecnie przestarzały kod.

Rozmiar pliku (spakowany gzipem) jest około 6k mniejszy, 23,6k vs 30k.

Jannie Theunissen
źródło
40

W tej chwili wydaje się, że najbardziej autorytatywną odpowiedzią jest ten problem , który stwierdza, że ​​„jest to niestandardowa kompilacja jQuery, która wyklucza efekty, ajax i przestarzały kod”. Szczegóły zostaną ogłoszone w jQuery 3.0.

Podejrzewam, że uzasadnieniem wyłączenia tych składników biblioteki jQuery jest uznanie coraz powszechniejszego scenariusza używania jQuery w połączeniu z innym frameworkiem JS, takim jak Angular lub React. W takich przypadkach użycie jQuery jest przede wszystkim wykorzystywane do przemierzania i manipulacji DOM, więc pominięcie tych komponentów, które są albo przestarzałe, albo dostarczone przez framework, powoduje zmniejszenie wielkości pliku o około 20%.

gxclarke
źródło
10
Może być również używany przez programistów, którzy używają nowoczesnych funkcji, takich jak fetch()który jest nowoczesnym zamiennikiem XMLHttpRequest(AJAX).
Fred
25

Blog jQuery, jQuery 3.1.1 wydany! , mówi,

Szczupła budowa

Czasami nie potrzebujesz ajax lub wolisz użyć jednej z wielu samodzielnych bibliotek, które koncentrują się na żądaniach ajax. I często łatwiej jest używać kombinacji CSS i manipulacji klasą dla wszystkich animacji internetowych. Wraz ze zwykłą wersją jQuery, która zawiera moduły ajax i efekty, wydaliśmy „wąską” wersję, która wyklucza te moduły. Podsumowując, wyklucza to ajax, efekty i obecnie przestarzały kod. Rozmiar jQuery jest obecnie bardzo rzadko związany z wydajnością ładowania, ale smukła wersja jest o około 6 tys. Bajtów zgzipowanych mniejszych niż zwykła wersja - 23,6 tys. Vs 30 tys.

ChrisW
źródło
17

Widziałem, że $.ajaxzostał usunięty z jQuery slim 3.2.1

Z dokumentów jQuery

Możesz także użyć cienkiej wersji, która wyklucza moduły ajax i efekty

Poniżej znajduje się komentarz od wersji slim z usuniętymi funkcjami

/*! 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
źródło
Jaka jest alternatywa dla $ .ajax?
Zyo
2
@Zyo albo użyj obiektu xmlhttprequest w zwykłym JavaScript, albo użyj normalnej wersji jQuery.
kiranvj
API pobierania jest rodzimym i naprawdę potężnym developer.mozilla.org/en-US/docs/Web/API/Fetch_API tutaj, jak go używać developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
Octavioamu
Pobieranie @Octavioamu jest opcją, ale może wymagać wypełnienia wielopunktowego na podstawie obsługiwanych przeglądarek
kiranvj
5

Jak wspomniano, moduły Ajax i efekty zostały wykluczone z jQuery slim, różnica wielkości od 3.3.1 dla wersji zminimalizowanej rozpakowana wynosi 85k vs 69k (oszczędność 16k dla slim) lub 30vs24 dla zip, ważne jest, aby pamiętać, że bootstrap 4 używa szczupły jQuery, więc jeśli ktoś chce pełnej wersji, musi to nazwać

Yehuda Schwartz
źródło