JQuery và các công cụ tương tự có thể được tích hợp vào trình duyệt không?


19

Sau khi đọc một câu hỏi khác về JQuery và CDN, các công cụ như JQuery có thể "đi kèm" với trình duyệt, do đó giảm / loại bỏ nhu cầu tải xuống đầu tiên từ CDN hoặc từ máy chủ lưu trữ của bạn.

Các tệp JQuery đặc biệt khá nhỏ, vì vậy bạn có thể dễ dàng có một số (tất cả?) Các phiên bản khác nhau như một phần của cài đặt trình duyệt. Bây giờ đủ công bằng, điều này sẽ tăng dấu chân cài đặt, thời gian tải xuống cho chính trình duyệt.

Sau đó, các trang web có thể kiểm tra "cục bộ" trước, trước CDN (sau đó lưu trữ), trước khi cuối cùng mặc định tải xuống từ chính máy chủ trang web.

Nếu điều này là khả thi, nó đã được thực hiện, và nếu không, tại sao nó không được thực hiện?


3
Khi một hàm JavaScript cụ thể trở nên phổ biến đến mức nó được xem là cần thiết ở mọi nơi, nó sẽ được thêm vào ngôn ngữ. Array.prototype.forEach, Array.prototype.indexOf, Object.createLà những ví dụ của mã đó đã kèm vào động cơ Javascript của chính nó.
zzzzBov

Tôi chắc chắn Chrome sẽ đưa ra giải pháp cung cấp cho người dùng cuối tùy chọn cài đặt tiện ích mở rộng với khả năng lưu trữ các tệp jQuery / javascript cần thiết khi trang web được hiển thị lần đầu tiên? Nếu người dùng từ chối, nó buộc yêu cầu như bình thường. Tùy chọn "không hỏi lại tôi" có thể vô hiệu hóa tùy chọn này. Có thể có một khu vực trong cài đặt nơi người dùng cuối có thể chọn tệp js sẽ lưu trong bộ đệm của trình duyệt bằng danh sách hộp kiểm đơn giản. Sẽ luôn có js tùy chỉnh được gửi cho khách hàng, nhưng dường như việc loại bỏ các tệp js được gửi cho khách hàng theo yêu cầu sẽ tối ưu hóa p
yardpenalty

1
Phiên bản nào bạn muốn đề nghị họ bao gồm? Tuần sau thì sao?
pdr

@pdr - câu hỏi cũ, với rất nhiều câu trả lời cho tiêu cực để làm điều này. NHƯNG bạn có thể dễ dàng gói phiên bản mới nhất với bản phát hành trình duyệt và cho phép mã người dùng quay lại yêu cầu phiên bản mới hơn từ CDN nếu được yêu cầu. Với việc phá vỡ các thay đổi như JQuery 2.0, bạn có thể có cả hai và cho phép mã chọn. Tất cả chỉ là một điểm câm :)
ozz

Câu trả lời:


15

Không có lý do công nghệ tại sao họ không thể. Tuy nhiên, nó không cần thiết và nó chống lại triết lý cơ bản của web. Điều đó là không cần thiết, bởi vì bạn có thể đạt được điều tương tự với tiêu đề hết hạn trong tương lai xa. Điều đó trái với triết lý của web vì nó khiến cho có một cơ quan tập trung từ trên xuống, trên đó các thư viện nên / không nên đi kèm với trình duyệt.

Chỉnh sửa: Chủ yếu là các thư viện JS để làm việc với DOM dễ dàng hơn. Tôi không nghĩ rằng việc kết hợp các thư viện của bên thứ ba với trình duyệt là cách phù hợp để làm cho API DOM dễ chịu hơn.


1
cảm ơn Dan - bất kỳ liên kết nào tôi có thể đọc về những gì bạn mô tả?
ozz

1
Tôi sẽ lập luận rằng việc cần tải xuống megabyte trên megabyte thư viện phổ biến mỗi khi tôi yêu cầu một trang đi ngược lại triết lý web cơ bản khác là giữ cho các trang web nhỏ và có thể truy cập được. Nhiều người vẫn đang sử dụng modem và kết nối vệ tinh chậm.
maple_shaft

4
Một hoạt động kênh gốc sẽ làm cho API DOM dễ chịu hơn ...
Donal Fellows

1
@maple_shaft, đó là một đối số hơi khó hiểu. Phân phối jQuery được rút gọn là 31K. Mặc dù chắc chắn có trường hợp có các trang web ngoài kia tải một số lượng lớn các thư viện khác nhau, câu hỏi dành riêng cho jQuery và không có kế toán nào cho các lập trình viên xảo quyệt.
Adam Crossland

16

Trên thực tế, những gì bạn mô tả đã tồn tại trong nhiều năm. Nó được gọi là bộ nhớ đệm . Và nó không chỉ có sẵn cho JQuery mà còn cho mọi thứ trình duyệt của bạn có thể tải xuống.

Sau đó, các trang web có thể kiểm tra "cục bộ" trước, trước CDN, trước khi cuối cùng mặc định tải xuống từ chính máy chủ trang web.

Đây chính xác là những gì mọi trình duyệt làm. Nó kiểm tra bộ đệm cục bộ trước, sau đó tải xuống từ CDN nếu cần. Với cấu hình bộ đệm phù hợp, thậm chí không có roundtrip đến máy chủ (để kiểm tra phiên bản mới hơn) trong nhiều tháng.

Bao gồm JQuery vào thiết lập trình duyệt sẽ:

  • Thêm sự phức tạp không cần thiết vào ứng dụng và thiết lập trình duyệt,

  • Thêm sự phức tạp không cần thiết để cập nhật quá trình,

  • Tăng số lượng cập nhật để giữ cho phiên bản cập nhật của JQuery, ngay cả đối với những người không cần nó,

  • Thêm nhầm lẫn: tại sao JQuery chứ không phải Prototype hoặc một số khung, hình ảnh, tệp CSS khác, v.v.?

  • v.v.

Tăng độ phức tạp của một sản phẩm phần mềm không có lợi ích về tính năng, hiệu năng, v.v ... là một ý tưởng cực kỳ tồi tệ.


Cảm ơn. Vâng, tôi đã không rõ ràng trong câu hỏi của tôi. Tôi cũng biết rằng đó là những gì xảy ra. Tôi đang nói về việc loại bỏ sự cần thiết cho ngay cả lần tải xuống đầu tiên. Tôi sẽ cập nhật câu hỏi.
ozz

cảm ơn vì tất cả lý do của bạn KHÔNG bao gồm trong thiết lập trình duyệt :-)
ozz

6
Bạn không thể loại bỏ nhu cầu tải xuống đầu tiên. Nếu JQuery được bao gồm trong thiết lập, nó sẽ được tải xuống lần đầu tiên khi người đó tải xuống thiết lập thực thi (sau đó nó được tải xuống lại thông qua các bản cập nhật khi một phiên bản JQuery mới được phát hành).
Arseni Mourzenko

2
Nó không loại bỏ lượt truy cập hiệu năng, nhưng chuyển nó từ lần truy cập trang web đầu tiên sang tải xuống cài đặt thực thi, điều đó có nghĩa là về tổng thể, điều này ngược lại với việc tiết kiệm hiệu suất. Nó cũng không loại bỏ sự cần thiết của CDN nếu bạn muốn hỗ trợ các trình duyệt cũ hơn và các trình duyệt không được cập nhật kể từ khi phát hành phiên bản JQuery cuối cùng.
Arseni Mourzenko

1
@ Tất cả Nếu bạn muốn thảo luận thêm về điều này thì hãy dùng nó để trò chuyện.
maple_shaft

5

Đừng quên rằng jQuery là một thư viện js, nó dường như đã trở thành một thư viện thực tế và được coi là thuốc chữa bách bệnh (đến mức trở nên đáng nhớ trên SO), nhưng nó chỉ là một thư viện js.

Mọi thứ đã được chuẩn hóa cho kịch bản (EMCAScript) đã được bao gồm trong trình duyệt, mọi thứ khác được thêm vào các trình duyệt khác sẽ trở thành không chuẩn và bạn sẽ gặp phải sự cố trình duyệt chéo cho các trình duyệt không chuẩn (như mô hình sự kiện IE ) ảnh hưởng đến một phần lý do tại sao các thư viện như jQuery đã được tạo ngay từ đầu.

Câu trả lời ngắn: chúng có thể được bao gồm, nhưng họ không nên.


5

Bộ nhớ đệm trình duyệt cung cấp một cái gì đó rất giống với những gì bạn đang nói về. Nó phải là trường hợp mà jQuery hoặc bất kỳ thư viện JS nào khác sẽ được tải xuống một lần và sau đó lấy từ bộ đệm theo các yêu cầu tiếp theo.

Mặc dù jQuery có thể là thư viện JavaScript phổ biến nhất, nhưng nó không phải là thư viện duy nhất và đối với tôi, việc biến nó thành một thành phần được cài đặt của trình duyệt sẽ không tốt cho hệ sinh thái JS. Cạnh tranh là lành mạnh và thường dẫn đến sự đổi mới, và chúng tôi, các nhà phát triển và người dùng phần mềm sẽ không được phục vụ tốt bằng cách cho jQuery một vị trí đặc biệt.

Một khi bạn tính đến bộ nhớ đệm, lợi thế mà bạn có được là rất, rất nhỏ. Phiên bản rút gọn của jQuery chỉ có 31K. Đó không phải là lý do để thay đổi bất cứ điều gì .


cảm ơn Adam - vâng, tôi biết lần tải xuống đầu tiên, kịch bản bộ đệm. Suy nghĩ của tôi là để thay thế là tốt. JQuery chỉ là 1 ví dụ nhưng tôi đồng ý với suy nghĩ của bạn về cạnh tranh, có vẻ như đây có thể là lý do chính khiến những gì tôi đề xuất không xảy ra. Sau đó, bạn sẽ có các trình duyệt khác nhau có các bộ thành phần "mặc định" khác nhau, v.v.
ozz

Tôi đã cập nhật câu hỏi để đề cập rằng tôi biết về bộ nhớ đệm :-)
ozz
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.