Tại sao trình duyệt không cài đặt jQuery?


19

Tôi đang sử dụng jQuery trên một số trang web của mình và mặc dù tôi sử dụng CDN để phục vụ nó, nhưng nó không có ý nghĩa đối với khách truy cập để tải xuống jQuery mỗi lần. jQuery phải là khung JavaScript được sử dụng rộng rãi nhất trên thế giới - sẽ không có ý nghĩa hơn nếu các trình duyệt chỉ cài đặt nó theo mặc định?

Theo cách đó, hàng triệu lần một ngày tải xuống jQuery có thể bị ngăn chặn. Hoặc từ các trang web riêng của mọi người hoặc từ CDN.

Tất cả những gì sẽ thực sự cần thiết là một số loại câu lệnh if như:

 <!--[if jQuery gt 11]>

Có thứ gì đó tồn tại sẽ giúp tôi ngăn người dùng thực hiện chuyến đi đến CDN nếu họ đã có jQuery trong bộ đệm của họ từ một trang web khác không?


3
câu hỏi là - tại sao người dùng cần thực hiện tải xuống mới từ các trang web hoặc CDN cho một cái gì đó mà anh ta đã có? jQuery được phục vụ từ nhiều địa điểm và trong nhiều phiên bản. Tôi lo ngại về tốc độ trang và người dùng quan tâm đến băng thông (đặc biệt là thiết bị di động). Nếu có một tiêu chuẩn vàng cho một thư viện - thì tại sao không sử dụng nó? Có những ví dụ khác chắc chắn và tôi cũng sẽ hoan nghênh những điều đó - miễn là có một tiêu chuẩn theo thỏa thuận cho họ (như số phiên bản).
dùng1914292

27
Tại sao jQuery nhưng không phải là Angular, MooTools, Underscore, ...? Và phiên bản nào của mỗi? Các trình duyệt có nên chứa các bản sao của mọi thư viện JavaScript từng được tạo không?
user253751

15
"Xin lỗi, bạn không thể sử dụng trang web của tôi cho đến khi bạn nâng cấp lên phiên bản trình duyệt cao hơn 0,1"
VLAZ


4
bộ nhớ đệm được thực hiện cho điều đó. nếu không, việc xử lý phiên bản về cơ bản là không thể
njzk2

Câu trả lời:


55

Nếu bạn phục vụ jQuery từ một CDN phổ biến như Thư viện được lưu trữ của Google hoặc cdnjs , nó sẽ không được tải xuống nếu khách truy cập của bạn đã ở trên một trang web tham chiếu nó từ cùng một nguồn (miễn là phiên bản được lưu trong bộ nhớ cache chưa hết hạn).

jQuery là một thư viện phổ biến, giống như bạn nói, nhưng việc gói nó với trình duyệt không có khả năng xảy ra vì một vài lý do:

  1. jQuery tương đối nhỏ (so với các thư viện đôi khi được gói trong các trình duyệt, như Flash). Các tắc nghẽn hiệu suất lớn nhất trên trang web trung bình dường như không phải là do tải xuống jQuery.
  2. Các cải tiến đối với JavaScript / ECMAScript có nghĩa là các nhà phát triển ngày càng không bắt buộc phải phụ thuộc vào jQuery. (Xem youmightnotneedjquery.com .)
  3. Có rất nhiều thư viện JavaScript phổ biến khác. Các trình duyệt không được thiết kế làm kho lưu trữ cho mã JavaScript. Theo dõi mức độ phổ biến của tập lệnh, loại bỏ các thư viện ít phổ biến hơn và giữ mọi thứ cập nhật có thể được dành cho các nhà phát triển web của các trang web riêng lẻ.

Tôi hiểu điều này, nhưng hiện tại tôi đang sử dụng code.jquery.com làm CDN. Tuy nhiên, khi một trang web khác sử dụng googleapis hoặc cdjns, trình duyệt sẽ LẠI tải xuống jQuery từ CDN khác đó. Điều đó chỉ không có ý nghĩa và tốn rất nhiều thời gian / băng thông ở mọi nơi. Nếu bạn thêm vào điều này rằng trong hầu hết các trường hợp, mọi người sẽ thích một cái gì đó như jQuery1.7 + thì nó thậm chí còn tệ hơn. Tôi hiểu quan điểm của bạn về các trình duyệt không phải là kho lưu trữ, nhưng liệu chúng ta có thể đưa ra một loại 'bộ đệm từ loại quy tắc nào không?
dùng1914292

24
@ user1914292 Điều này sẽ chỉ hữu ích nếu tất cả các trình duyệt có tất cả các phiên bản jQuery tồn tại và nếu nó chặn bất kỳ yêu cầu nào đối với bất kỳ nguồn jQuery nào đã biết, thay thế nó bằng phiên bản được lưu trữ. Nếu thậm chí có một sự khác biệt nhỏ, nó có thể gây ra lỗi không thể gỡ lỗi. Điều này càng trở nên trầm trọng hơn bởi thực tế là bộ nhớ đệm web hoạt động và đã hoạt động trong nhiều thập kỷ. Trình duyệt của bạn không phải là thứ duy nhất lưu trữ các yêu cầu jQuery đó - nhiều bộ định tuyến trên đường đến trình duyệt của bạn cũng làm như vậy. Vấn đề đã được giải quyết từ lâu, khi băng thông vấn đề :)
Luaan

4) Điều gì sẽ xảy ra nếu mã jquery trên một trang web cụ thể phụ thuộc vào một chức năng đã bị thay đổi về cơ bản trong bản cập nhật gần đây và không còn làm những gì mã dự kiến ​​sẽ làm?
Shadur

1
@Ejay không, nó không hoạt động như một cơ chế theo dõi vì 99% thời gian yêu cầu được gửi từ bộ đệm của trình duyệt của bạn.
suriv

1
@BenSteward Có, sử dụng các công cụ phát triển của trình duyệt của bạn và kiểm tra bảng điều khiển Mạng . Chẳng hạn, Chrome sẽ hiển thị các tài nguyên được lưu trong bộ nhớ cache với bộ nhớ cache của bộ nhớ cache Bộ nhớ cache bộ nhớ cache hoặc bộ nhớ cache Bộ nhớ cache trong cột kích thước của bộ nhớ và một giá trị bị mờ trong cột tình trạng mật khẩu (miễn là bạn không có bộ đệm Tắt bộ nhớ cache (trong khi DevTools đang mở). Hoạt động trong cài đặt công cụ dev). Nó có thể phụ thuộc vào các tiêu đề kiểm soát bộ đệm và các yếu tố khác như những gì được lưu trong bộ nhớ cache và trong bao lâu. developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Nick

21

JQuery không chỉ là thư viện JS phổ biến duy nhất, một trình duyệt có khả năng sẽ phải bao gồm nhiều phiên bản. Các Google CDN hiện liệt kê: 42 phiên bản của jQuery; 44 phiên bản của UI UI; 6 phiên bản jQuery Mobile.

Tốt hơn là cho phép các nhà phát triển web xác định phiên bản nào của thư viện để tải xuống dựa trên yêu cầu của trang web của họ. Nếu bạn sử dụng phiên bản sản xuất hiện tại của jQuery trên trang web của mình tải nó từ CDN phổ biến hơn, thì rất có thể khách truy cập của bạn sẽ đã lưu nó vào bộ nhớ cache.


14

Trình duyệt là động cơ không phải là nhiệm vụ của người thiết kế động cơ để tìm hiểu loại nhiên liệu và các bộ phận phụ bạn sẽ đưa vào xe của bạn và bao gồm nó cho bạn. Nếu họ làm trình duyệt này sẽ là một bloatware khổng lồ bởi vì câu hỏi tiếp theo sẽ là "tại sao chỉ là jQuery?", Và cuối cùng chúng tôi sẽ duy trì kho lưu trữ phụ thuộc.

Ngoài ra, chúng tôi sẽ bao gồm tất cả các phiên bản? Nếu ai đó muốn sử dụng một phiên bản tùy chỉnh thì sao? Nếu ai đó không muốn sử dụng thư viện đó thì sao? Tần suất họ sẽ hợp nhất và cuộn các bản phát hành mới nhất? Chúng ta sẽ kết thúc với các trình duyệt khác nhau với các jQuery phiên bản khác nhau chứ? Họ thậm chí không thể thực hiện các chức năng HTML, CSS và JavaScript được tiêu chuẩn hóa như nhau. Điều gì xảy ra nếu một trong những người bảo trì trình duyệt sẽ không bao gồm thư viện hoặc phiên bản cụ thể của nó?

Trình duyệt cung cấp các khối xây dựng và môi trường để bạn xây dựng chưa phải là một giải pháp đã hoàn thành.

Đưa jQuery vào trình duyệt sẽ không khiến trang web của bạn tải quá nhanh vì hiện tại đây không phải là nút cổ chai lớn nhất, tuy nhiên chúng ta có thể đồng ý rằng jQuery là một thư viện lớn không cần thiết nhưng mục đích của nó không bao giờ là thư viện nhanh (xem xét băng thông). Có nhiều thư viện khác được thiết kế đặc biệt xung quanh tải nhanh và nhẹ như Zepto .

Nếu bạn thực sự lo ngại về kích thước và mức sử dụng băng thông của jQuery, thì đừng sử dụng nó. Bạn đã bao giờ nghe nói về Vanilla JS chưa? Đây là một thư viện thậm chí phổ biến hơn được sử dụng theo nghĩa đen bởi hầu hết mọi người bao gồm jQuery riêng của mình! Và nó đã thực hiện được ước mơ của bạn vì nó được bao gồm trong mọi trình duyệt!


2

Một lý do để sử dụng một thư viện như jQuery là khả năng tương thích.

Các trình duyệt đã trở nên tuân thủ tiêu chuẩn hơn, nhưng bằng cách sử dụng thư viện jquery, bạn tự cung cấp, bạn không phải lo lắng về sự khác biệt giữa các phiên bản và gia đình trình duyệt

Bằng cách tự cung cấp jquery, bạn chắc chắn sẽ có một api phù hợp.

Nếu chúng tôi có phần mềm được tích hợp trong trình duyệt, bạn phải kiểm tra phiên bản nào của người dùng và chúng tôi sẽ quay lại trình duyệt và "Trang web này được xem tốt nhất trong ..."

Vì vậy, việc xây dựng jquery vào trình duyệt không có ý nghĩa.

Ngoài ra, bộ nhớ đệm hoạt động, vì vậy ngay cả khi người dùng chưa có phiên bản jquery của bạn, nó chỉ cần được tải xuống một lần.


-3

Tôi thực sự nghĩ rằng những người trả lời ở đây không hiểu rằng câu trả lời cho câu hỏi là các trình duyệt có lẽ nên bao gồm các thư viện được sử dụng rộng rãi nhất và các polyfill, v.v. ở phía máy khách.

Là người đặt câu hỏi, các bình luận có điều kiện có thể được sử dụng để đảm bảo rằng những người sử dụng trình duyệt không bao gồm jquery được cung cấp một phiên bản phù hợp.

Jquery cũng bao gồm hỗ trợ tương thích ngược của chính nó thông qua di chuyển, cho phép các bình luận có điều kiện cung cấp hỗ trợ retro cho ai đó với phiên bản đóng gói của thư viện jquery cũ mà không cần tải xuống toàn bộ thư viện mới.

Đối số CHO bao gồm những điều này trong các trình duyệt sẽ không chỉ là về trải nghiệm và chi phí của người dùng, mà còn về hành tinh chúng ta đang sống. Việc sử dụng dữ liệu là một đóng góp rất lớn cho ô nhiễm toàn cầu và đảm bảo rằng việc truyền dữ liệu không cần thiết được giảm thiểu có thể có tác động lớn đến dấu chân carbon của chúng ta.

Về bản chất, vì mục đích thêm một vài megabyte mã phình to trong một trình duyệt được đóng gói - cùng một dữ liệu đang được sử dụng một cách không cần thiết khoảng hàng tỷ lần mỗi ngày.

Điều đó làm xấu đi trải nghiệm người dùng cho tất cả mọi người trên internet. Và chi phí cho các doanh nghiệp lớn số tiền rất lớn.

Là một nhà phát triển, bạn sẽ chỉ tạo ra các dự phòng cần thiết như chúng tôi hiện đang làm cho IE, v.v. vậy vấn đề là gì - có lẽ nên được đưa vào?


1
Đây là tiếp tuyến cho câu hỏi. Câu hỏi là "tại sao không có trình duyệt và tôi có thể làm gì với nó", chứ không phải "tại sao trình duyệt nên".
Stephen Ostermiller

OP, trong khi cân nhắc quan điểm của bạn, quan tâm đến việc giảm lưu lượng truy cập vào CDN nếu khung đã tồn tại trong bộ đệm của trình duyệt thậm chí có thể từ một trang web khác. Cá nhân, tôi không thể thấy làm thế nào trừ khi có một cách phổ biến để tham chiếu khung.
Closnoc

Hầu hết mọi người đã không nói câu trả lời phù hợp nhất cho câu hỏi và đó là jQuery không phải là một tiêu chuẩn web và các trình duyệt chỉ chạy các tiêu chuẩn web thay đổi chậm và dựa trên các nguyên tắc cơ bản. jQuery ban đầu được tạo ra để làm cho các nguyên tắc cơ bản hoạt động nhất quán giữa các trình duyệt, bao gồm cả jQuery giống như bao gồm một bản vá để sửa các trình duyệt nhưng cuối cùng các trình duyệt đã tự sửa. Chúng ta đã thấy việc sử dụng jQuery giảm dần như một phần được chứng minh bằng nhiều bài viết "Bạn không cần jQuery" ngày nay.
Rob

Stephen. Câu hỏi không phải là "tại sao không có trình duyệt và tôi có thể làm gì với nó". Đó là sự thử lại của bạn về nó. Câu hỏi đặt ra là tại sao họ không và người hỏi nói rõ rằng chỉ cần làm điều này và tạo ra một khuôn khổ mới để xử lý các vấn đề phát sinh sẽ thực sự có lợi ích tiềm năng rất lớn cho tất cả người dùng web.
Andy Bbop

Tất cả bạn cần ngừng bảo vệ những định kiến ​​đã lỗi thời của mình và chấp nhận tất cả những gì bạn vẫn có thể học hỏi. Oh, và cũng học cách thực sự đọc một cái gì đó. #Weapons. "OP, trong khi cân nhắc quan điểm của bạn, quan tâm đến việc giảm lưu lượng truy cập vào CDN". Không, ông nói rằng nó có thể tiết kiệm được lượng băng thông cho dù ở phía máy khách hay CDN. Đọc bài viết.
Andy Bbop
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.