Sự khác biệt giữa gói jquery bình thường và mỏng là gì?


435

Tại CDNJS gói jquery.slim được đặt. Nó có kích thước nhỏ hơn. Sự khác biệt chính từ một bản gốc là gì? Nhìn nhanh vào mã không mang lại câu trả lời, và tại jquery.com tôi không tìm thấy bất kỳ tài liệu tham khảo nào về slimgói.

Vậy, sự khác biệt giữa jquery.js và jquery.slim.js là gì?



Theo quan điểm của tôi, bạn đã chấp nhận một câu trả lời tầm thường và nên thay đổi điều đó.
Robert Siemer

@RobertSiemer, có thể, nhưng phiếu bầu của hàng trăm người cho thấy tính thực tế rõ ràng theo thời gian theo quan điểm của tôi. Câu trả lời được chấp nhận đã đầy đủ và kịp thời và hiện vẫn đưa ra giải pháp ngắn gọn, nhanh chóng và sử dụng đủ.
SynCap

Tôi hoàn toàn không đồng ý với bạn. Phiếu bầu cho câu trả lời được chấp nhận cho thấy không có gì so với các câu trả lời khác bên dưới (và bạn nên biết điều đó). Và bất cứ điều gì câu trả lời đã làm ngược thời gian là hoàn toàn không liên quan đến một trang web công cộng. Mọi người đến đây bây giờ và cần câu trả lời tốt nhất có thể. Hơn nữa: Bhojendra Rauniyar hoàn toàn có thể làm mà không cần 15 đại diện. điểm.
Robert Siemer

Số lượng tuyệt đối của downvote là một chỉ số tốt hơn về chất lượng so với các câu trả lời khác. Tôi chỉ nhận ra rằng câu trả lời thứ hai thực sự được bình chọn nhiều nhất, vì vậy không có gì nhiều để nói.
Robert Siemer

Câu trả lời:


296

Nhìn vào mã tôi thấy các khác biệt sau đây giữa jquery.js và jquery.slim.js:

Trong jquery.slim.js, các tính năng sau bị xóa:

  1. jQuery.fn.extend
  2. jquery.fn.load
  3. jquery.each // Đính kèm một loạt các hàm để xử lý các sự kiện AJAX phổ biến
  4. jQuery.expr.filters.animated
  5. các cài đặt ajax như jQuery.ajaxSinstall.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  6. phân tích xml như jQuery.parseXML,
  7. hiệu ứng hoạt hình như jQuery.ease, jQuery.Animation, jQuery.speed

6
Trong nguồn mỏng 3.x, tôi vẫn thấy jQuery.fn.extendđang được sử dụng để thêm các phương thức vào các gói được bọc. Bạn đã đề cập đến một cái gì đó khác trong # 1?
cantera

39
Đáng chú ý là Bootstrap 4 đang nhắm mục tiêu phát hành mỏng jQ. Ảnh động có lẽ là điểm vỡ lớn nhất, nhưng hầu hết chúng có thể được thực hiện tốt hơn và nhanh hơn bằng cách sử dụng CSS3.
Josh Habdas

3
"JQuery.each" có nghĩa là gì? jQuery.each chưa bị xóa trong jQuery 3 slim
Chris Moschini

18
Có thể muốn chỉnh sửa câu trả lời để diễn đạt điều này một cách khác biệt - nói jquery.each ở đây trong một danh sách những gì bị loại bỏ là khó hiểu.
Chris Moschini

1
các chức năng như slideUp, slideDown cũng không hoạt động với phiên bản mỏng.
Usman Arshad

316

Câu trả lời ngắn được lấy từ thông báo của Phiên bản cuối cùng của jQuery 3.0 :

Cùng với phiên bản thông thường của jQuery bao gồm các mô-đun ajax và hiệu ứng, chúng tôi sẽ phát hành một phiên bản mỏng manh của Wikipedia loại trừ các mô-đun này. Nói chung, nó không bao gồm ajax, hiệu ứng và mã hiện không dùng nữa.

Kích thước tệp (gzipped) nhỏ hơn khoảng 6k, 23,6k so với 30k.


40

Tại thời điểm này, câu trả lời có thẩm quyền nhất dường như là trong vấn đề này , trong đó nêu rõ "đó là một bản dựng tùy chỉnh của jQuery loại trừ các hiệu ứng, ajax và mã không dùng nữa". Chi tiết sẽ được công bố với jQuery 3.0.

Tôi nghi ngờ rằng lý do để loại trừ các thành phần này của thư viện jQuery là để nhận ra kịch bản ngày càng phổ biến của jQuery được sử dụng cùng với một khung công tác JS khác như Angular hoặc React. Trong các trường hợp này, việc sử dụng jQuery chủ yếu dành cho thao tác và thao tác DOM, do đó, loại bỏ các thành phần đó đã lỗi thời hoặc được cung cấp bởi khung tăng khoảng 20% ​​kích thước tệp.


10
Cũng có thể được sử dụng bởi các nhà phát triển sử dụng các tính năng hiện đại như fetch()là một thay thế hiện đại cho XMLHttpRequest(AJAX).
Fred

25

Blog jQuery, jQuery 3.1.1 đã phát hành! , nói,

Vóc dáng thon gọn

Đôi khi bạn không cần ajax hoặc bạn thích sử dụng một trong nhiều thư viện độc lập tập trung vào các yêu cầu ajax. Và thường thì đơn giản hơn là sử dụng kết hợp CSS và thao tác lớp cho tất cả các hoạt hình web của bạn. Cùng với phiên bản thông thường của jQuery bao gồm các mô-đun ajax và hiệu ứng, chúng tôi đã phát hành một phiên bản mỏng mỏng của Wikipedia loại trừ các mô-đun này. Nói chung, nó không bao gồm ajax, hiệu ứng và mã hiện không dùng nữa. Kích thước của jQuery rất hiếm khi là một vấn đề về hiệu suất tải hiện nay, nhưng bản dựng mỏng chỉ khoảng 6k byte được nén bằng các phiên bản thông thường - 23,6k so với 30k.


17

Tôi có thể thấy $.ajaxđược gỡ bỏ khỏi jQuery slim 3.2.1

Từ các tài liệu jQuery

Bạn cũng có thể sử dụng bản dựng mỏng, loại trừ các mô-đun ajax và hiệu ứng

Dưới đây là nhận xét từ phiên bản mỏng với các tính năng bị xóa

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

Sự thay thế cho $ .ajax là gì?
Zyo

2
@Zyo hoặc sử dụng đối tượng xmlhttprequest bằng JavaScript đơn giản hoặc sử dụng phiên bản jQuery bình thường.
kiranvj

API tìm nạp là nhà phát triển bản địa và thực sự mạnh
mẽ.mozilla.org/en

@Octavioamu fetch là một tùy chọn, nhưng có thể cần một polyfill dựa trên các trình duyệt hỗ trợ
kiranvj

5

Như đã lưu ý, các mô-đun Ajax và hiệu ứng đã được loại trừ khỏi jQuery slim, sự khác biệt về kích thước kể từ 3.3.1 cho phiên bản rút gọn được giải nén là 85k so với 69k (tiết kiệm 16k cho mỏng) hoặc 30vs24 để nén, điều quan trọng cần lưu ý là sử dụng bootstrap 4 jQuery mỏng nên nếu ai đó muốn phiên bản đầy đủ, họ cần phải gọi nó thay thế

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.