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?



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

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.


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%.


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.


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 */

Jaka jest alternatywa dla $ .ajax?
Zyo

2
@Zyo albo użyj obiektu xmlhttprequest w zwykłym JavaScript, albo użyj normalnej wersji jQuery.
kiranvj


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ć

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.