Jaka jest różnica między Zepto a jQuery 2?

81

Istnieją dwa podobne projekty:

Zepto.js

Zepto to minimalistyczna biblioteka JavaScript dla nowoczesnych przeglądarek z interfejsem API w dużej mierze kompatybilnym z jQuery.

jQuery 2.0

jQuery 2.0 beta: Oto twój gust przyszłości, jQuery, który może być szybszy i mniejszy bez konieczności obsługi IE 6, 7 lub 8. Jest to doskonały wybór dla aplikacji HTML specyficznych dla platformy.

Czy chodzi tylko o wydajność, czy też stosują różne podejścia?

jantimon
źródło
3
Jeśli kiedykolwiek spróbujesz przełączyć się z jQuery na Zepto: blog.pamelafox.org/2011/11/porting-from-jquery-to-zepto.html
Aurelio,
37
To przydatne, interesujące, istotne pytanie dotyczące konkretnego problemu programistycznego. Dlaczego był zamknięty? To nie jest „co jest lepsze”, ale „jakie są zastrzeżenia w używaniu”
Benjamin Gruenbaum

Odpowiedzi:

52

Podstawową różnicą między Zepto.js i jQuery są ich odpowiednie rozmiary plików Zepto.js ~ 20kb (zminimalizowane, nie spakowane gzipem) zamiast ~ 80kb jQuery i ~ 10kb Zepto.js (zminimalizowane, Gzipped) zamiast ~ 30kb jQuery. Ponadto wsparcie Zepto dla przeglądarek, takich jak IE<10brak lub nie jest gwarantowane, jego platformy docelowe to:

  • Safari 5+ (komputer)
  • Chrome 5+ (komputer)
  • Mozilla Firefox 4+
  • Safari na iOS 4+
  • Przeglądarka Android 2.2+
  • Inne przeglądarki / środowiska wykonawcze oparte na WebKit
  • Przeglądarka webOS 1.4.5+
  • Przeglądarka BlackBerry Tablet OS 1.0.7+
  • Amazon Silk 1.0+
  • Opera 10+
  • Internet Explorer 10+
MHD
źródło
14
jquery 2 ma ~ 30kb, a zepto ~ 10kb, gdy oba pliki są zgzipowane i zminimalizowane. Niegzipowany, jquery 2 to nadal ~ 80kb, a zepto ~ 30kb.
asparagino
-1. Jak wskazuje asparagino, liczby MHD są nieprawidłowe. Jego odpowiedź jest ważna.
Jason
4
Zarówno Zepto, jak i jQuery obsługują niestandardowe kompilacje, więc rozmiar zlewu kuchennego może nie być tak ważny. Różnica polega na tym, że jQuery ma lepszą obsługę i wydajność, jest częściej aktualizowany i ma bardziej aktywną społeczność. Atrakcyjność Zepto jest znacznie zmniejszona, ponieważ jQuery 2.0 pokrywa luki, które Zepto wypełnił.
John-David Dalton,
23

jquery 2 to ~ 30kb, a zepto to ~ 10kb, gdy oba pliki są zgzipowane i zminimalizowane. Niegzipowany, ale zminimalizowany, jquery 2 ma ~ 80kb, a zepto ~ 30kb.

Użyj programu analitycznego, aby sprawdzić odbiorców swojej witryny. Jeśli znaczna część twoich użytkowników używa IE9, potrzebujesz jquery, a zepto nie będzie latać. Jeśli kilka procent korzysta z IE8 i niższych i nie możesz ich zostawić bez swojej witryny, będziesz musiał użyć jquery 1. Jeśli celujesz w to ostatnie, przepraszam - dużo nowych błyszczących zabawek nie zadziała dla Ciebie.

Jeśli tworzysz aplikację html5 na Androida / iOS / phonegap itp., To przede wszystkim kierujesz się na webkit, więc zepto zapewnia duże oszczędności. Podstawowym wnioskiem i powodem istnienia zepto jest to, że gdy działa tylko na platformach webkit, wiele obejść międzyplatformowych jquery jest po prostu niepotrzebnych.

Zepto dodaje również kilka programów obsługi zdarzeń dotykowych, które pomagają w tworzeniu urządzeń mobilnych, ale należy pomyśleć głównie o wadze strony w porównaniu z obsługą platformy.

szparagino
źródło
1
Prawdopodobnie jeśli wybierzesz jedną platformę, obejścia między platformami są niepotrzebne :)
Rob Grant
Zepto jest bliżej ~ 25kb;). Mają też instrukcje kompilacji, aby przepakować bibliotekę do minimalnego wymaganego rozmiaru.
Jason
Zakładam, że mówisz o niezgzipowanej, ale zminimalizowanej kompilacji, która tak naprawdę nie wahała się więcej niż kilka KB w ciągu ośmiu miesięcy, odkąd to napisałem. Więc ... 25kb to ~ 30kb: P
asparagino,
14

To dość stare pytanie, ale chciałbym dodać wydajność. Z tego, co słyszałem, Zepto działał lepiej niż jQuery.

Ten plik jsPerf pokazuje różne wyniki. Mogę używać selekcji klas jQuery (pojedynczego elementu) 137% tak często, jak Zepto. Do wyboru identyfikatora mogę równie często używać 285% jQuery.

To ogromna sprawa, biorąc pod uwagę większość aplikacji, interakcje DOM są jedynymi statystykami wydajności, które mają znaczenie (inne niż żądania sieciowe).

Patrząc również na tę perf, widzę, że mógłbym zrobić document.getElementsByClassNAme 8326% tak często, jak jQuery, więc wszyscy powinniśmy porzucić to wszystko, jeśli to możliwe :-)

Bandyta
źródło
3
Nie tak mówią chłopaki z Zurb. Jednym z powodów, dla których usunęli Zepto ze swojego frameworka CSS, był fakt, że jQuery przewyższał Zepto, nawet jeśli plik Zepto był mniejszy. Innymi powodami były liczne wtyczki napisane dla jQuery. Sprawdź ich post na blogu: zurb.com/article/1293/why-we-dropped-zepto
Ricardo Zea
2
@ricardozea, ta odpowiedź i ten artykuł mówią to samo: jQuery działa szybciej z selektorami. Aby było jasne, potrzebujesz około 100 plików jsperf, aby w pełni przetestować biblioteki, a następnie zatrudnić statystykę, aby określić, która jest średnio szybsza dla przeciętnej witryny i przeciętnego użytkownika.
Brigand
1
Mówisz: „ ... Zepto działał lepiej niż jQuery. ”. Tak, zgadzamy się, że jQuery jest szybsze.
Ricardo Zea
1
heh Nie :-) Tak właśnie mi powiedziano; moje ustalenia były takie, że jQuery był szybszy (przynajmniej z selektorami).
Brigand
3

Myślę, że nigdy nie używał Zepto do szybkiego przejścia w sieć. Spójrz Głęboko w swojej lodowej jaskini, mądry i potężny Yeti słyszał, jak ludzie pytają: „Gdzie Zepto poszedł?” Kiedy powstawał Foundation 4, przeszliśmy na Zepto (z opcją jQuery) ze względu na mniejszy rozmiar pliku i krótszy czas ładowania.

Jednak z biegiem czasu okazało się, że mniejszy rozmiar pliku nie przekładał się na ogólną lepszą wydajność. Jasne, Zepto pobrał się szybko. Ale po załadowaniu nie był tak szybki jak jQuery. Nie pomogło to, że wiele wtyczek innych firm wymagało jQuery, a nie Zepto - w rzeczywistości okazało się, że niektóre skrypty JavaScriptu innych firm były w konflikcie z Zepto.

Utrzymanie różnych baz kodu również nie było dla nas łatwe. Na przykład Zepto nie ma odpowiedniej funkcji obliczania wysokości, co utrudnia niektóre obliczenia siatki.

Aby rozwiązać ten problem, odpowiedź była jasna jak wiosenne niebo w Himalajach: Foundation 5 używa jQuery 2. Oprócz większej szybkości i akceptacji w branży, jQuery 2 korzysta również z lepszej dokumentacji i wsparcia. jQuery jest kompatybilny z API.

**

Ale założyliśmy, że Zepto będzie szybsze niż jQuery. Nie chcieliśmy robić tego samego założenia dwa razy, więc przetestowaliśmy Zepto vs. jQuery 2. Wynik: jQuery 2 ma więcej operacji na sekundę. To zapewnia Foundation 5 lepszą wydajność, co przekłada się na lepsze wrażenia dla wszystkich użytkowników.

**

W końcu chcemy pomóc ludziom szybciej projektować świetne produkty - a tym razem oznacza to przyspieszenie najbardziej responsywnego frameworka front-end na świecie.

HAROONMIND
źródło
Jeśli tak bardzo zależy Ci na wydajności, dlaczego w ogóle używasz jQuery? Jasne, jQuery ma lepszą wydajność niż Zepto, ale wydajność jQuery jest do niczego w porównaniu z VanillaJS. Zasadniczo VanillaJS jest lepszą i lepszą wersją jQuery. Wyobraź sobie ogromne biblioteki zoptymalizowanych funkcji o wysokiej wydajności, spakowane razem w lekki pakiet. To jest moc VanillaJS. Gorąco polecam wypróbowanie tego.
Jack Giffin,
1

Z tego, co przeczytałem, ludzie wydają się mocno skłaniać się ku Zepto. Najczęstszym powodem tego jest rozmiar pliku, ale jQuery 2 jest w rzeczywistości szybszy niż Zepto po załadowaniu. Nie znajdziesz też zbyt dużego wsparcia dla Zepto, ponieważ większość ludzi rozwija się wokół jQuery. Nie sugeruję, aby nie używać Zepto, ale powinieneś sprawdzić, dlaczego chcesz go używać i czy inne biblioteki JavaScript, z którymi korzystasz, lub konflikt z nim.

Powiedziałbym, że to zależy od twojego projektu. Do użytku osobistego lub ograniczonego Zepto może być lepszą opcją. Jednak jQuery jest znacznie bardziej obsługiwany przez inne biblioteki i jeśli rozmiar pliku jest jedyną rzeczą określającą przyczynę, jest on wadliwy. JavaScript powinien zostać załadowany po załadowaniu strony, dlatego w żadnym przypadku nie wpłynie to na czas ładowania strony.

Oto test wydajności obejmujący jQuery 1.7.2, Zepto 1.0rc1, a także jQMobi 1.03.

Kody
źródło