Sự khác biệt giữa Zepto và jQuery 2 là gì?


81

Có hai dự án tương tự:

Zepto.js

Zepto là một thư viện JavaScript tối giản dành cho các trình duyệt hiện đại với API tương thích với jQuery.

jQuery 2.0

jQuery 2.0 beta: Đây là sở thích của bạn về tương lai, một jQuery có thể nhanh hơn và nhỏ hơn mà không cần hỗ trợ IE 6, 7 hoặc 8. Đây là lựa chọn tuyệt vời cho các ứng dụng HTML dành riêng cho nền tảng.

Đây chỉ là về hiệu suất hay họ làm theo các cách tiếp cận khác nhau?


3
Trong trường hợp bạn cố gắng chuyển từ jQuery sang Zepto: blog.pamelafox.org/2011/11/porting-from-jquery-to-zepto.html
Aurelio

37
Đây là một câu hỏi hữu ích, thú vị, có liên quan về một vấn đề lập trình cụ thể. Tại sao nó bị đóng cửa? Nó không "mà là tốt hơn", nhưng "hãy cẩn thận khi sử dụng là gì"
Benjamin Gruenbaum

Câu trả lời:


52

Sự khác biệt cơ bản giữa Zepto.js và jQuery là kích thước tệp tương ứng của chúng là ~ 20kb của Zepto.js (được rút gọn, không được nén) thay vì ~ 80kb của jQuery và của Zepto.js là ~ 10kb (được rút gọn, được Gzipped) thay vì của jQuery là ~ 30kb. Hơn nữa, sự hỗ trợ của Zepto đối với các trình duyệt như IE<10thiếu hoặc không được đảm bảo, các nền tảng mục tiêu của nó là:

  • Safari 5+ (máy tính để bàn)
  • Chrome 5+ (máy tính để bàn)
  • Mozilla Firefox 4+
  • iOS 4+ Safari
  • Trình duyệt Android 2.2+
  • Các trình duyệt / thời gian chạy dựa trên WebKit khác
  • trình duyệt webOS 1.4.5+
  • Trình duyệt BlackBerry Tablet OS 1.0.7+
  • Amazon Silk 1.0+
  • Opera 10+
  • Internet Explorer 10+

14
jquery 2 là ~ 30kb và zepto là ~ 10kb khi cả hai được giải nén và rút gọn. Không gzipped, jquery 2 vẫn là ~ 80kb và zepto là ~ 30kb.
asparagino

-1. Như asparagino đã chỉ ra, các con số của MHD không chính xác. Câu trả lời của anh ấy là hợp lệ.
Jason

4
Cả Zepto & jQuery đều hỗ trợ các bản dựng tùy chỉnh nên kích thước bồn rửa nhà bếp của cả hai có thể không quá quan trọng. Sự khác biệt là jQuery có hỗ trợ và hiệu suất tốt hơn, được cập nhật thường xuyên hơn và có một cộng đồng tích cực hơn. Sự hấp dẫn của Zepto phần lớn đã giảm đi khi jQuery 2.0 che lấp những khoảng trống mà Zepto từng lấp đầy.
John-David Dalton

23

jquery 2 là ~ 30kb và zepto là ~ 10kb khi cả hai đều được giải nén và rút gọn. Không được giải nén nhưng được rút gọn, jquery 2 là ~ 80kb và zepto là ~ 30kb.

Sử dụng chương trình phân tích để kiểm tra khán giả cho trang web của bạn. Nếu một phần đáng kể người dùng của bạn sử dụng IE9, bạn cần jquery và zepto sẽ không bay. Nếu hơn một vài phần trăm sử dụng IE8 trở xuống và bạn không thể đối mặt với việc chúng bị mắc kẹt mà không có trang web của mình, bạn sẽ cần phải sử dụng jquery 1. Nếu bạn đang nhắm mục tiêu cái cuối cùng đó, tôi xin lỗi - rất nhiều đồ chơi sáng bóng mới sẽ không hiệu quả với bạn.

Nếu bạn đang xây dựng một ứng dụng html5 cho android / ios / phonegap, v.v. thì bạn chủ yếu nhắm mục tiêu đến webkit, vì vậy zepto sẽ cung cấp cho bạn khả năng tiết kiệm kích thước lớn. Cái nhìn sâu sắc và lý do chính để zepto tồn tại là khi chỉ chạy trên nền tảng webkit, rất nhiều cách giải quyết nền tảng chéo của jquery đơn giản là không cần thiết.

Zepto cũng bổ sung một số trình xử lý sự kiện cảm ứng để hỗ trợ nhà phát triển di động, nhưng chủ yếu là trọng lượng trang so với hỗ trợ nền tảng mà bạn cần suy nghĩ.


1
Có lẽ nếu bạn chọn bất kỳ một nền tảng nào thì các giải pháp thay thế đa nền tảng là không cần thiết :)
Rob Grant

Zepto gần ~ 25kb;). Và họ có hướng dẫn xây dựng để đóng gói lại thư viện với kích thước tối thiểu mà bạn cần.
Jason

Tôi cho rằng bạn đang nói về bản dựng không được nén nhưng được thu nhỏ, thực sự không dao động nhiều hơn vài kb trong tám tháng kể từ khi tôi viết bài này. Vì vậy ... 25kb là ~ 30kb: P
asparagino

14

Đây là một câu hỏi hơi cũ, nhưng tôi muốn bổ sung thêm hiệu suất. Từ những gì tôi đã nghe, Zepto hoạt động tốt hơn jQuery.

JsPerf này cho thấy các kết quả khác nhau. Tôi có thể sử dụng lựa chọn lớp của jQuery (của một phần tử) 137% thường xuyên, so với của Zepto. Đối với lựa chọn ID, tôi có thể sử dụng 285% của jQuery thường xuyên.

Đó là một vấn đề lớn khi xét trên hầu hết các ứng dụng, tương tác DOM là thống kê hiệu suất duy nhất quan trọng (ngoài các yêu cầu mạng).

Cũng nhìn vào hiệu suất đó, tôi có thể thấy rằng tôi có thể làm document.getElementsByClassNAme 8326% thường xuyên như jQuery, vì vậy tất cả chúng ta nên bỏ tất cả những điều này nếu có thể :-)


3
Đó không phải là những gì những người ở Zurb nói. Một trong những lý do khiến họ bỏ Zepto khỏi khung CSS của mình là vì jQuery hoạt động tốt hơn Zepto ngay cả khi tệp của Zepto nhỏ hơn. Các lý do khác là do nhiều plugin được viết cho jQuery. Kiểm tra bài đăng trên blog của họ: zurb.com/article/1293/why-we-dropped-zepto
Ricardo Zea

2
@ricardozea, câu trả lời này và bài viết đó nói cùng một điều: jQuery nhanh hơn với bộ chọn. Tuy nhiên, để rõ ràng hơn, bạn cần khoảng 100 jsperfs để kiểm tra đầy đủ các thư viện và sau đó thuê một chuyên gia thống kê để xác định xem cái nào nhanh hơn trung bình cho trang web bình thường và người dùng bình thường.
Brigand

1
Bạn đang nói: " ... Zepto hoạt động tốt hơn jQuery. ". Có, chúng tôi đồng ý rằng jQuery nhanh hơn.
Ricardo Zea

1
heh Không :-) Đó chỉ là những gì tôi đã được nói; phát hiện của tôi là jQuery nhanh hơn (ít nhất là với bộ chọn).
Brigand


3

Tôi nghĩ rằng chưa bao giờ sử dụng zepto để chuyển đổi lướt web nhanh chóng, hãy xem Sâu bên trong hang động băng giá của mình, Yeti khôn ngoan và mạnh mẽ nghe thấy mọi người hỏi, "Zepto đã đi đâu?" Trở lại khi Foundation 4 đang được hình thành, chúng tôi đã chuyển sang Zepto (với tùy chọn jQuery) vì kích thước tệp nhỏ hơn và thời gian tải nhanh hơn.

Nhưng theo thời gian, chúng tôi nhận thấy rằng kích thước tệp nhỏ hơn không chuyển thành hiệu suất tốt hơn về tổng thể. Chắc chắn, Zepto đã tải xuống nhanh chóng. Nhưng sau khi tải, nó không nhanh như jQuery. Nó không hữu ích khi nhiều plugin của bên thứ ba yêu cầu jQuery, không phải Zepto - trên thực tế, chúng tôi nhận thấy rằng một số JavaScripts của bên thứ ba xung đột hoàn toàn với Zepto.

Việc duy trì các cơ sở mã khác nhau cũng không dễ dàng đối với chúng tôi. Ví dụ, Zepto thiếu chức năng tính toán chiều cao thích hợp, khiến việc tính toán lưới nhất định trở nên khó khăn.

Để giải quyết tất cả những điều này, câu trả lời đã rõ ràng như bầu trời Himalaya mùa xuân: Foundation 5 sử dụng jQuery 2. Ngoài tốc độ tốt hơn và sự chấp nhận của ngành, jQuery 2 cũng được hưởng lợi từ tài liệu và hỗ trợ tốt hơn. jQuery tương thích với API.

**

Nhưng chúng tôi cho rằng Zepto sẽ nhanh hơn jQuery. Chúng tôi không muốn đưa ra giả định giống nhau hai lần, vì vậy chúng tôi đã thử nghiệm Zepto so với jQuery 2. Kết quả: jQuery 2 có nhiều hoạt động hơn mỗi giây. Điều đó mang lại cho Foundation 5 hiệu suất tốt hơn, mang đến trải nghiệm tốt hơn cho tất cả người dùng.

**

Cuối cùng, chúng tôi muốn giúp mọi người thiết kế các sản phẩm tuyệt vời nhanh hơn - và lần này, điều đó có nghĩa là cung cấp cho khung giao diện người dùng đáp ứng tốt nhất trên thế giới để tăng tốc độ.


Nếu bạn quá lo lắng về hiệu suất, tại sao bạn lại sử dụng jQuery? Chắc chắn jQuery có hiệu suất tốt hơn Zepto, nhưng hiệu suất của jQuery kém hơn so với VanillaJS. Về cơ bản, VanillaJS là một phiên bản tốt hơn và vượt trội hơn của jQuery. Hãy tưởng tượng các thư viện rộng lớn gồm các chức năng được tối ưu hóa hiệu suất cao được đóng gói cùng nhau trong một gói lông vũ. Đó là sức mạnh của VanillaJS. Tôi rất khuyến khích hãy thử nó.
Jack Giffin

1

Từ những gì tôi đã đọc, mọi người dường như nghiêng nhiều về Zepto. Lý do phổ biến nhất đằng sau đó là kích thước tệp, nhưng jQuery 2 thực sự nhanh hơn Zepto sau khi nó được tải. Ngoài ra, bạn sẽ không tìm thấy nhiều hỗ trợ cho Zepto vì hầu hết mọi người đều phát triển xung quanh jQuery. Tôi không khuyên bạn không nên sử dụng Zepto, nhưng bạn nên tìm hiểu lý do tại sao bạn muốn sử dụng nó và liệu các thư viện JavaScript khác mà bạn đang sử dụng có hỗ trợ / xung đột với nó hay không.

Tôi sẽ nói rằng nó phụ thuộc vào dự án của bạn. Đối với mục đích sử dụng cá nhân hoặc giới hạn, Zepto có thể là lựa chọn tốt hơn. Tuy nhiên, jQuery được các thư viện khác hỗ trợ nhiều hơn và nếu kích thước tệp là yếu tố duy nhất xác định lý do của bạn thì đó là sai sót. JavaScript phải được tải sau khi trang được tải, do đó nó sẽ không cản trở thời gian tải trang của bạn trong cả hai trường hợp.

Đây là bài kiểm tra hiệu suất bao gồm jQuery 1.7.2, Zepto 1.0rc1 và cả jQMobi 1.03.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.