Mungkinkah JQuery dan alat-alat serupa dibangun di dalam browser?

19

Setelah membaca pertanyaan lain tentang JQuery dan CDN, apakah layak untuk alat seperti JQuery untuk "datang dengan" browser, sehingga mengurangi / menghilangkan kebutuhan untuk unduhan pertama dari CDN, atau dari server host Anda sendiri.

File JQuery secara khusus cukup kecil, sehingga Anda dapat dengan mudah memiliki nomor (semua?) Dari versi yang berbeda sebagai bagian dari pemasangan browser. Sekarang cukup adil, ini akan meningkatkan jejak instalasi, waktu pengunduhan untuk browser itu sendiri.

Kemudian situs dapat memeriksa "lokal" terlebih dahulu, sebelum CDN (yang kemudian di-cache), sebelum akhirnya default untuk mengunduh dari server situs web itu sendiri.

Jika ini layak, apakah sudah dilakukan, dan jika tidak, mengapa belum dilakukan?

ozz
sumber
3
Ketika fungsi JavaScript tertentu menjadi sangat umum sehingga dianggap dibutuhkan di mana-mana, fungsi itu ditambahkan ke bahasa. Array.prototype.forEach, Array.prototype.indexOf, Object.createMerupakan contoh kode yang mendapat dibundel ke dalam mesin JavaScript itu sendiri.
zzzzBov
Saya yakin Chrome akan datang dengan solusi yang menawarkan opsi kepada pengguna akhir untuk menginstal ekstensi dengan kemampuan untuk men-cache file jQuery / javascript yang diperlukan saat situs pertama kali dirender? Jika pengguna menolak itu akan memaksa permintaan seperti biasa. Opsi "jangan tanya saya lagi" dapat menonaktifkan opsi ini. Mungkin ada area dalam pengaturan di mana pengguna akhir dapat memilih file js mana yang akan disimpan dalam cache browser menggunakan daftar kotak centang sederhana. Akan selalu ada custom js yang dikirim ke klien, tetapi tampaknya menghapus file js yang dikirim ke klien per permintaan akan mengoptimalkan p
yardpenalty
1
Versi mana yang akan Anda sarankan untuk dimasukkan? Bagaimana dengan minggu depan?
pdr
@ pdr - pertanyaan lama, dengan banyak jawaban negatif untuk melakukan ini. TETAPI Anda dapat dengan mudah menggabungkan versi terbaru dengan rilis browser dan memungkinkan kode pengguna untuk kembali meminta versi yang lebih baru dari CDN jika diperlukan. Dengan memecah perubahan seperti JQuery 2.0, Anda bisa memiliki keduanya dan mengizinkan kode untuk memilih. Semua poin bisu benar-benar :)
ozz

Jawaban:

15

Tidak ada alasan teknologi mengapa mereka tidak bisa. Namun, itu tidak perlu dan itu bertentangan dengan filosofi dasar web. Itu tidak perlu, karena Anda dapat mencapai hal yang hampir sama dengan header masa depan yang jauh kedaluwarsa. Ini bertentangan dengan filosofi web karena menyebabkan ada otoritas top-down, terpusat di mana perpustakaan harus / tidak boleh dibundel dengan browser.

Sunting: Pustaka JS ada, terutama, untuk membuat berurusan dengan DOM lebih mudah. Saya tidak berpikir bundling perpustakaan pihak ketiga dengan browser adalah cara yang tepat untuk membuat DOM API lebih menyenangkan.

dan_waterworth
sumber
1
terima kasih Dan - ada tautan yang bisa saya baca tentang apa yang Anda gambarkan?
ozz
1
Saya berpendapat bahwa perlu mengunduh megabyte pada megabyte perpustakaan umum setiap kali saya meminta halaman bertentangan dengan filosofi web mendasar lainnya yaitu menjaga halaman web kecil dan dapat diakses. Banyak orang masih menggunakan modem dan koneksi satelit lambat.
maple_shaft
4
Operasi saluran akar akan membuat DOM API lebih menyenangkan ...
Donal Fellows
1
@maple_shaft, itu argumen yang agak membingungkan. Distribusi jQuery yang diperkecil adalah 31K. Meskipun memang ada kasus bahwa ada halaman web di luar sana yang memuat sejumlah gila perpustakaan yang berbeda, pertanyaannya adalah khusus untuk jQuery, dan tidak ada akuntansi untuk programmer jelek.
Adam Crossland
16

Sebenarnya, apa yang Anda gambarkan sudah ada selama bertahun-tahun. Ini disebut caching . Dan itu tersedia tidak hanya untuk JQuery, tetapi untuk semua peramban Anda dapat mengunduh.

Kemudian situs dapat memeriksa "lokal" terlebih dahulu, sebelum CDN, sebelum akhirnya secara default mengunduh dari server situs web itu sendiri.

Inilah yang dilakukan oleh setiap browser. Ia memeriksa cache lokal terlebih dahulu, kemudian mengunduh satu dari CDN jika perlu. Dengan konfigurasi cache yang tepat, bahkan tidak ada bolak-balik ke server (untuk memeriksa versi yang lebih baru) selama berbulan-bulan.

Termasuk JQuery ke dalam pengaturan browser akan:

  • Tambahkan kompleksitas yang tidak perlu ke aplikasi dan pengaturan browser,

  • Tambahkan kompleksitas yang tidak perlu untuk memperbarui proses,

  • Tingkatkan jumlah pembaruan untuk menjaga versi JQuery yang terbaru, bahkan untuk orang yang tidak membutuhkannya,

  • Tambahkan kebingungan: mengapa JQuery dan bukan Prototipe, atau kerangka kerja lain, gambar, file CSS, dll?

  • dll.

Meningkatkan kompleksitas produk perangkat lunak tanpa manfaat dalam hal fitur, kinerja, dll. Adalah ide yang sangat buruk.

Arseni Mourzenko
sumber
Terima kasih. Ya, saya tidak jelas dalam pertanyaan saya. Saya sadar bahwa itulah yang terjadi. Saya berbicara tentang menghilangkan kebutuhan bahkan untuk unduhan pertama. Saya akan memperbarui pertanyaan.
ozz
terima kasih untuk semua alasan Anda TIDAK untuk dimasukkan dalam pengaturan browser :-)
ozz
6
Anda tidak dapat menghilangkan kebutuhan untuk unduhan pertama. Jika JQuery termasuk dalam setup, itu adalah download untuk pertama kalinya ketika orang mendownload executable setup (kemudian di-download lagi melalui update ketika versi baru dari JQuery dilepaskan).
Arseni Mourzenko
2
Itu tidak menghilangkan hit kinerja, tetapi memindahkannya dari kunjungan situs web pertama ke pengunduhan setup executable, yang berarti bahwa secara keseluruhan, ini adalah kebalikan dari penghematan kinerja. Itu tidak menghilangkan kebutuhan CDN juga jika Anda ingin mendukung browser yang lebih lama dan browser yang tidak diperbarui sejak rilis versi JQuery terakhir.
Arseni Mourzenko
1
@ Semua Jika Anda ingin membahas ini lebih lanjut, silakan bawa ini ke obrolan.
maple_shaft
5

Jangan lupa bahwa jQuery adalah perpustakaan js, tampaknya telah menjadi de facto dan dipandang sebagai obat mujarab (sampai-sampai menjadi patut diingat pada SO), tetapi itu hanya perpustakaan js.

Segala sesuatu yang terstandarisasi untuk skrip (EMCAScript) sudah termasuk dalam browser, apa pun yang ditambahkan ke browser lain akan menjadi non-standar dan Anda akan berakhir dengan masalah lintas browser untuk browser non-standar (seperti model acara IE ) yang memengaruhi sebagian alasan mengapa perpustakaan seperti jQuery telah dibuat sejak awal.

Jawaban singkat: mereka bisa dimasukkan, tetapi seharusnya tidak.

StuperUser
sumber
5

Caching peramban menyediakan sesuatu yang sangat mirip dengan apa yang Anda bicarakan. Seharusnya jQuery atau perpustakaan JS lainnya akan diunduh satu kali dan kemudian diambil dari cache pada permintaan lebih lanjut.

Walaupun jQuery mungkin adalah pustaka JavaScript yang paling banyak ditemukan di mana-mana, jQuery bukan satu-satunya dan menurut saya membuatnya menjadi komponen browser yang terinstal akan berdampak buruk bagi ekosistem JS. Persaingan sehat dan umumnya mengarah pada inovasi, dan kami para pengembang dan pengguna perangkat lunak tidak akan terlayani dengan baik dengan memberikan posisi khusus pada jQuery.

Setelah Anda memperhitungkan caching, keuntungan yang Anda peroleh sangat, sangat minim. Versi jQuery yang diperkecil hanya 31K. Itu bukan alasan untuk mengubah apa pun .

Adam Crossland
sumber
terima kasih Adam - ya, saya tahu unduhan pertama, skenario cache. Pikiranku adalah untuk menggantikannya juga. JQuery hanya 1 contoh tapi saya setuju dengan pemikiran Anda tentang kompetisi, ini sepertinya itu menjadi alasan utama apa yang saya sarankan tidak terjadi. Anda kemudian akan memiliki browser yang berbeda yang memiliki komponen komponen "default" yang berbeda, dll.
ozz
Saya telah memperbarui pertanyaan untuk menyebutkan bahwa saya mengetahui caching :-)
ozz