Mengapa browser tidak menginstal jQuery?

19

Saya menggunakan jQuery di beberapa situs web saya dan meskipun saya menggunakan CDN untuk menyajikannya, tidak masuk akal bagi pengunjung untuk mengunduh jQuery setiap kali. jQuery harus menjadi kerangka kerja JavaScript yang paling banyak digunakan di dunia - bukankah lebih masuk akal jika browser hanya menginstalnya secara default?

Dengan cara itu jutaan kali sehari unduhan jQuery dapat dicegah. Baik dari situs web orang sendiri atau dari CDN.

Semua yang benar-benar dibutuhkan adalah semacam pernyataan if seperti:

 <!--[if jQuery gt 11]>

Apakah ada sesuatu yang akan membantu saya mencegah pengguna melakukan perjalanan ke CDN jika mereka sudah memiliki jQuery dalam cache mereka dari situs lain?

pengguna1914292
sumber
3
pertanyaannya adalah - mengapa pengguna perlu membuat unduhan baru dari situs atau CDN untuk sesuatu yang sudah ia miliki? jQuery dilayani dari banyak lokasi dan dalam banyak versi. Saya khawatir tentang kecepatan halaman dan pengguna khawatir tentang bandwidth (terutama ponsel). Jika ada standar emas untuk perpustakaan - lalu mengapa tidak menggunakannya? Ada contoh lain yang pasti dan saya akan menyambut mereka juga - selama ada standar yang disepakati untuk mereka (seperti nomor versi).
user1914292
27
Mengapa jQuery tetapi tidak Angular, MooTools, Underscore, ...? Dan versi mana dari masing-masing? Haruskah browser berisi salinan dari setiap perpustakaan JavaScript yang pernah dibuat?
user253751
15
"Maaf, Anda tidak dapat menggunakan situs web saya sampai Anda memutakhirkan ke versi browser yang lebih tinggi 0,1"
VLAZ
4
Relevan
Charlie
4
caching dibuat untuk itu. jika tidak, penanganan versi pada dasarnya tidak mungkin
njzk2

Jawaban:

55

Jika Anda melayani jQuery dari CDN populer seperti Google Hosted Libraries atau cdnjs , itu tidak akan diunduh ulang jika pengunjung Anda berada di situs yang mereferensikannya dari sumber yang sama (selama versi cache belum kedaluwarsa).

jQuery adalah pustaka populer, seperti yang Anda katakan, tetapi menggabungkannya dengan browser tidak mungkin terjadi karena beberapa alasan:

  1. jQuery relatif kecil (dibandingkan dengan perpustakaan yang terkadang dibundel dalam browser, seperti Flash). Hambatan kinerja terbesar di situs rata-rata tidak mungkin karena mengunduh jQuery.
  2. Perbaikan pada JavaScript / ECMAScript berarti bahwa pengembang semakin tidak diharuskan untuk bergantung pada jQuery. (Lihat youmightnotneedjquery.com .)
  3. Ada banyak perpustakaan JavaScript populer lainnya. Peramban tidak dirancang sebagai repositori untuk kode JavaScript. Melacak popularitas skrip, menjatuhkan pustaka yang kurang populer, dan menjaga agar semuanya selalu terbarui mungkin lebih baik diserahkan kepada pengembang web dari masing-masing situs.
Nick
sumber
Saya mengerti ini, tetapi saya sekarang menggunakan code.jquery.com sebagai CDN. Namun, ketika situs web lain menggunakan googleapis atau cdjns browser akan LAGI mengunduh jQuery dari CDN lainnya. Itu tidak masuk akal dan menghabiskan banyak waktu / bandwidth di semua tempat. Jika Anda menambahkan ini bahwa dalam kebanyakan kasus orang ingin sesuatu seperti jQuery1.7 + maka itu akan menjadi lebih buruk. Saya mengerti maksud Anda tentang peramban yang bukan repositori, tetapi bukankah kami dapat membuat semacam 'cache dari berbagai jenis aturan'?
user1914292
24
@ user1914292 Ini hanya akan berguna jika semua browser memiliki semua versi jQuery yang pernah ada, dan jika ia mencegat permintaan ke sumber jQuery yang dikenal, menggantinya dengan versi cache. Jika ada perbedaan kecil, itu mungkin menyebabkan bug yang tidak mungkin untuk di-debug. Ini semakin diperparah oleh fakta bahwa caching web berfungsi , dan telah bekerja selama beberapa dekade. Peramban Anda bukan satu-satunya yang menyimpan permintaan jQuery - banyak perute yang sedang menuju peramban melakukan hal yang sama. Masalahnya telah dipecahkan sejak lama, ketika bandwidth memang
berpengaruh
4) Bagaimana jika kode jquery di situs tertentu bergantung pada fungsi yang telah diubah secara mendasar dalam pembaruan terbaru dan tidak lagi melakukan apa yang diharapkan oleh kode?
Shadur
1
@ Jangan, itu tidak berfungsi sebagai mekanisme pelacakan karena 99% dari waktu permintaan dilayani dari cache browser Anda.
suriv
1
@BenSteward Ya, gunakan alat dev browser Anda dan periksa panel Network . Chrome, misalnya, akan menampilkan sumber daya yang di-cache dengan "cache disk" atau "cache memori" di kolom "size" dan nilai ghosted di kolom "status" (selama Anda tidak memiliki "Nonaktifkan cache (sementara DevTools terbuka) ”aktif dalam pengaturan alat dev). Hal ini dapat bergantung pada tajuk kontrol cache dan faktor lain tentang apa yang di-cache dan untuk berapa lama. developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Nick
21

Tidak hanya jQuery bukan satu-satunya perpustakaan JS yang populer, peramban berpotensi harus menyertakan beberapa versi. The Google CDN saat ini daftar: 42 versi jQuery; 44 versi jQuery UI; 6 versi jQuery Mobile.

Lebih baik mengizinkan pengembang web untuk menentukan versi perpustakaan mana yang akan diunduh berdasarkan persyaratan situs web mereka. Jika Anda menggunakan versi produksi jQuery saat ini di situs web Anda dan memuatnya dari CDN yang lebih populer, maka kemungkinan besar pengunjung Anda akan sudah menyimpannya di cache.

Andrew Lott
sumber
14

Peramban adalah mesin yang bukan tugas perancang mesin untuk mengetahui jenis bahan bakar dan komponen tambahan apa yang akan Anda masukkan ke dalam mobil Anda dan memasukkannya untuk Anda. Jika mereka melakukan ini, browser akan menjadi bloatware besar karena pertanyaan berikutnya adalah "mengapa hanya jQuery?", Dan kita akhirnya akan mempertahankan repositori dependensi.

Juga, akankah kami menyertakan semua versi? Bagaimana jika seseorang ingin menggunakan versi khusus? Bagaimana jika seseorang tidak ingin menggunakan perpustakaan itu? Seberapa sering mereka akan menggabungkan dan memutar rilis terbaru? Apakah kita akan berakhir dengan browser yang berbeda dengan jQuerys versi yang berbeda? Mereka bahkan tidak dapat menerapkan fungsi HTML, CSS, dan JavaScript standar yang setara. Bagaimana jika salah satu pengelola browser tidak akan menyertakan perpustakaan atau versi spesifiknya?

Peramban menyediakan blok bangunan dan lingkungan untuk Anda bangun bukan solusi yang sudah jadi.

Menempatkan jQuery ke dalam peramban tidak akan membuat situs Anda memuat dengan sangat cepat karena saat ini ini bukan hambatan terbesar, namun kami dapat setuju bahwa jQuery adalah perpustakaan yang tidak perlu besar, tetapi tujuannya tidak pernah menjadi perpustakaan yang cepat (mempertimbangkan bandwidth). Ada banyak perpustakaan lain yang secara khusus dirancang untuk memuat cepat dan menjadi ringan seperti Zepto .

Jika Anda benar-benar peduli tentang ukuran dan penggunaan bandwidth jQuery, maka jangan menggunakannya. Pernahkah Anda mendengar tentang Vanilla JS ? Ini adalah perpustakaan yang bahkan lebih populer yang digunakan secara harfiah oleh hampir semua orang termasuk jQuery sendiri! Dan itu sudah memenuhi impian Anda karena sudah termasuk dalam setiap browser!

totymedli
sumber
2

Alasan menggunakan perpustakaan seperti jQuery adalah kompatibilitas.

Peramban menjadi lebih memenuhi standar, tetapi dengan menggunakan pustaka jquery, Anda menyediakan sendiri, Anda tidak perlu khawatir tentang perbedaan antara keluarga peramban dan versi

Dengan memasok jquery sendiri, Anda yakin memiliki api yang konsisten.

Jika kami memiliki jquery yang terpasang di dalam browser, Anda harus memeriksa versi mana yang dimiliki oleh pengguna, dan kami kembali ke browser-niffing dan "Situs ini paling baik dilihat di ..."

Jadi memiliki jquery di browser tidak masuk akal.

Juga, caching berfungsi, jadi bahkan jika pengguna belum memiliki versi jquery Anda, itu hanya perlu diunduh satu kali.

Lenne
sumber
-3

Saya benar-benar berpikir para responden di sini gagal memahami bahwa jawaban atas pertanyaan adalah browser mungkin harus mencari untuk memasukkan perpustakaan yang paling banyak digunakan, dan polyfill dll di sisi klien.

Sebagai orang yang mengajukan pertanyaan menyatakan, komentar bersyarat dapat digunakan untuk memastikan bahwa mereka yang menggunakan browser yang tidak termasuk jquery disajikan versi yang sesuai.

Jquery juga menyertakan dukungan kompatibilitas mundurnya sendiri melalui migrasi, memungkinkan komentar bersyarat untuk memberikan dukungan retro untuk seseorang dengan versi paket dari pustaka jquery lama tanpa mengunduh pustaka yang sama sekali baru.

Argumen untuk menyertakan ini di browser tidak hanya tentang pengalaman pengguna dan biaya, tetapi juga tentang planet ini kita hidup. Penggunaan data merupakan kontribusi besar terhadap polusi global, dan memastikan bahwa transfer data yang tidak perlu diminimalkan dapat memiliki efek dramatis pada jejak karbon kita.

Intinya demi menambahkan beberapa megabyte kode tambahan di browser yang terpaket - data yang sama sedang diangkut sekitar miliaran kali sehari.

Itu memperburuk pengalaman pengguna untuk semua orang di internet. Dan biaya bisnis besar dalam jumlah besar.

Sebagai pengembang, Anda hanya perlu membuat cadangan yang diperlukan seperti yang kami lakukan saat ini untuk IE dll, jadi apa masalahnya - mungkin harus dimasukkan tentunya?

Andy Bbop
sumber
1
Ini bersinggungan dengan pertanyaan. Pertanyaannya adalah "kenapa tidak browser, dan apa yang bisa saya lakukan tentang hal itu", bukan "mengapa harus browser."
Stephen Ostermiller
OP, sambil merenungkan poin Anda, tertarik untuk mengurangi lalu lintas ke CDN jika kerangka kerja sudah ada dalam cache browser bahkan mungkin dari situs lain. Secara pribadi, saya tidak bisa melihat bagaimana kecuali ada cara umum untuk referensi kerangka kerja.
closetnoc
Kebanyakan orang telah gagal untuk juga mengatakan jawaban yang paling relevan untuk pertanyaan dan itu adalah jQuery bukan standar web dan browser hanya menjalankan standar web yang berubah perlahan dan didasarkan pada dasar-dasar. jQuery awalnya dibuat untuk membuat dasar-dasar bekerja secara konsisten di antara browser, jadi termasuk jQuery seperti memasukkan tambalan untuk memperbaiki peramban tetapi peramban pada akhirnya sudah memperbaiki sendiri. Sudah kita melihat berkurangnya penggunaan jQuery sebagai sebagian dibuktikan oleh banyak artikel "Anda tidak perlu jQuery" di sekitar saat ini.
Rob
Stephen. Pertanyaannya bukan "kenapa tidak browser, dan apa yang bisa saya lakukan tentang hal itu". Itu pengulangan Anda untuk itu. Pertanyaannya adalah mengapa mereka tidak melakukannya, dan orang yang bertanya dengan jelas menyatakan bahwa hanya melakukan ini dan membuat kerangka kerja baru untuk menangani masalah yang muncul sebenarnya akan memiliki potensi manfaat yang sangat besar bagi semua pengguna web.
Andy Bbop
Anda semua harus berhenti membela prasangka yang sudah ketinggalan zaman dan menerima bahwa Anda semua masih bisa belajar. Oh, dan juga belajar untuk benar-benar membaca sesuatu. #Weapons. "OP, sambil merenungkan poin Anda, tertarik untuk mengurangi lalu lintas ke CDN". Tidak, katanya, ia bisa menghemat jumlah bandwidth yang besar baik di sisi klien atau CDN. Baca pos yang berpengaruh.
Andy Bbop