- Sebagai pembaruan versi mayor pertama dalam sekitar 10 tahun, jQuery 4.0.0 kini resmi dirilis
- Dukungan untuk IE 10 ke bawah dan browser lama dihentikan, kode dibuat lebih ringan dan kepatuhan pada standar modern diperkuat; sebagian besar pengguna dapat melakukan upgrade tanpa perubahan kode
- Dengan transisi ke struktur berbasis modul ES, build kini menggunakan Rollup untuk memastikan kompatibilitas dengan lingkungan pengembangan modern
- Dukungan Trusted Types dan CSP ditambahkan untuk meminimalkan konflik dengan kebijakan keamanan
- Penghapusan API deprecated dan penyederhanaan slim build meningkatkan performa dan kemudahan pemeliharaan
Ikhtisar utama jQuery 4.0.0
- jQuery 4.0.0 adalah rilis mayor berskala besar pertama dalam sekitar 10 tahun, diselesaikan setelah siklus pengembangan panjang dan beberapa prarilis
- Sebagian besar pengguna dapat melakukan upgrade tanpa perubahan kode
- Kode legacy dan parameter privat yang menumpuk dari versi sebelumnya telah dihapus
- Panduan upgrade dan plugin jQuery Migrate juga disediakan untuk membantu transisi dari versi sebelumnya
- Distribusi tersedia melalui CDN resmi dan npm, sementara CDN lain akan diperbarui secara bertahap
Perubahan dukungan browser
- Dukungan untuk IE 10 ke bawah dihentikan, dan IE 11 dijadwalkan dihapus bertahap pada jQuery 5.0
- Edge Legacy, iOS versi lama (lebih lama dari 3 versi terbaru), Firefox versi lama (lebih lama dari 2 versi terbaru), Android Browser tidak lagi didukung
- Jika masih harus mendukung browser lama, disarankan tetap menggunakan jQuery 3.x
Kompatibilitas Trusted Types dan CSP
- Dukungan Trusted Types ditambahkan agar objek TrustedHTML dapat diproses dengan aman
- Sebagian besar permintaan skrip asinkron dialihkan ke basis tag ``, untuk mencegah error CSP
- Saat menggunakan opsi
"headers", XHR masih dapat digunakan, tetapi penggunaan scriptAttrs direkomendasikan
Transisi ke modul ES
- Source jQuery sepenuhnya dipindahkan dari AMD ke modul ES
- Rollup diadopsi sebagai alat build menggantikan RequireJS
- Pengujian juga dijalankan secara terpisah berdasarkan modul ES
- `` digunakan untuk memastikan kompatibilitas dengan browser modern dan build tool
Penghapusan API deprecated
- API yang telah lama berstatus deprecated kini dihapus sepenuhnya
- Fungsi yang dihapus:
jQuery.isArray, jQuery.parseJSON, jQuery.trim, jQuery.type, jQuery.now, jQuery.isNumeric, jQuery.isFunction, jQuery.isWindow, jQuery.camelCase, jQuery.nodeName, jQuery.cssNumber, jQuery.cssProps, jQuery.fx.interval
- Pengganti: gunakan metode native seperti
Array.isArray(), JSON.parse(), String.prototype.trim(), Date.now()
- Dengan penghapusan kode terkait IE, ukuran berkurang sekitar 3KB dalam gzip
Penghapusan metode internal
- Metode push, sort, splice yang sebelumnya hanya digunakan secara internal di prototipe jQuery telah dihapus
- Sebagai pengganti,
$elems.push(elem) dapat diubah menjadi [].push.call($elems, elem)
Perubahan urutan event fokus
- Diseragamkan ke urutan event focus/blur sesuai spesifikasi W3C
- Urutan baru: blur → focusout → focus → focusin
- Karena berbeda dari urutan jQuery sebelumnya, perlu perhatian soal kompatibilitas
- Semua browser selain IE berperilaku dengan urutan yang sama
Peningkatan Slim build
- Deferreds dan Callbacks dihapus, sehingga ukuran file menyusut menjadi sekitar 19.5KB (gzip)
- Sebagian besar browser sudah mendukung Promise native, sehingga dapat digunakan sebagai pengganti
- Jika masih membutuhkan dukungan IE11, disarankan memakai build utama atau polyfill Promise
- Slim build mengecualikan modul Ajax dan animasi sehingga sekitar 8KB lebih kecil
Unduhan dan distribusi
- Tersedia untuk diunduh melalui CDN resmi dan npm
- Perintah instalasi npm:
npm install jquery@4.0.0
Kontributor dan peringatan 20 tahun
- Banyak kontributor open source berpartisipasi dalam patch, laporan bug, dan pengujian
- Menandai 20 tahun jQuery, tim berkumpul kembali di Dallas, dan pendiri John Resig juga ikut melalui Zoom
Ringkasan perubahan kode utama (Changelog)
- Ajax: peningkatan pemrosesan data biner, pencegahan error CSP, penanganan error JSONP diperkuat
- CSS: perbaikan perhitungan ukuran elemen ``, peningkatan penanganan spasi pada variabel CSS, hook
opacity dihapus
- Core: transisi
AMD → modul ES, penggunaan DOMParser, penghapusan kode kompatibilitas browser lama
- Event: penanganan native untuk event focus/blur, shim
event.which dihapus
- Selector: integrasi Sizzle, peningkatan
:has dan :even/:odd, penambahan chaining uniqueSort
- Docs: pembaruan tautan HTTPS, perapian dokumen README dan CONTRIBUTING
- Release: otomatisasi proses build dan distribusi, migrasi berbasis
release-it
Ringkasan
- jQuery 4.0.0 adalah versi perombakan struktural yang disesuaikan dengan standar web modern dan kebijakan keamanan
- Penghapusan kode legacy, modularisasi ES, penguatan keamanan, dan peringanan ukuran memperkuat fondasi pemeliharaan jangka panjang
- Dinilai sebagai rilis simbolis yang menandai 20 tahun ekosistem jQuery
3 komentar
Ini adalah ulang tahun ke-20 yang mengharukan. Sekarang memang sudah hampir tidak ada kesempatan untuk menggunakannya, tetapi saya tetap berharap ini terus dicintai sebagai alat yang berguna di lapangan.
Benar-benar tangguh ya.. hehe
Komentar Hacker News
Sebagai bacaan terkait, ada artikel yang merangkum dengan baik cara menggunakan jQuery secara reaktif ketika codebase lawas tidak bisa memakai framework modern
Reactive jQuery for Spaghetti-fied Legacy Codebases
Jika harus memakai jQuery karena alasan legacy, Backbone bisa menjadi tahap peralihan yang baik sebelum pindah ke framework modern
Situs resmi BackboneJS, daftar tag GitHub
Sebenarnya pernah juga ada kasus ketika kode React yang terlalu over-engineered lebih buruk daripada kode jQuery yang rapi
Memang React menaikkan standar kualitas, tetapi kadang lebih efisien memakai alat yang sudah kita kenal dengan tepat
Ini sangat cocok terutama untuk masalah dengan cakupan kecil seperti Userscript, ketika build step terasa merepotkan
Sebenarnya tanpa jQuery pun bisa cukup dengan
querySelector,addEventListener, daninnerHTMLWaktu itu harus memaksa memasukkan frontend pencarian kustom ke dalam Joomla CMS, dan ternyata berjalan cukup baik
Itulah persis cara yang kami lakukan di Reactive Mastro
jQuery masih menjadi salah satu library favoritku
Ini alat yang membangun karierku, jadi aku selalu punya rasa sayang padanya
Kombinasi jQuery + jQuery UI + plugin + AI rasanya punya potensi luar biasa
Setiap kali ada pembahasan HTMX, aku selalu berpikir, “bukankah itu bisa diselesaikan dengan tiga baris jQuery?”
Bagaimanapun, jQuery selalu menyelesaikan masalah, dan itu yang penting
.load()milik jQueryLihat dokumentasi jQuery.load()
Aku menemukannya saat mengerjakan optimasi performa, dan itu benar-benar membuatku makin menghormati jQuery
$()tetap yang terbaikMungkin perbedaan performa juga bisa diimbangi dengan pra-perhitungan
Sederhana, tetapi tetap bisa memberi nuansa seperti SPA
Good ol’ jQuery, benar-benar sosok yang layak disyukuri
Senang melihat jQuery masih terus dipelihara dan diperbarui
Tapi ini juga berarti React mungkin masih akan hidup sampai 2060, dan itu agak menyedihkan
Kalau mengingat callback hell zaman dulu, kondisi sekarang terasa seperti mimpi
Aku juga belajar pengembangan web dengan jQuery pada masa 2000~2010-an, ketika framework SPA belum umum
Sepertinya banyak hal yang kubuat saat itu masih berjalan sampai sekarang
Salam terima kasih untuk tim jQuery
Selamat kepada semua yang terlibat dalam rilis jQuery 4.0
Jika menginginkan pendekatan yang lebih terstruktur, ada sistem template reaktif bernama JsViews
Sudah lama dan stabil, tetapi tidak mendapat perhatian sebesar framework modern
Secara pribadi aku suka gaya jQuery modern seperti cheerio dan alpine.js
cheerio.js.org, alpinejs.dev
Hanya saja desain situsnya terlalu jadul, jadi tingkat adopsinya tampak rendah
Meski begitu, muatnya cepat, dan ringannya sangat mengesankan
jsrender.min.js hanya 12.82kB
Sulit dipercaya, tapi jQuery 4.0 masih mendukung IE11
Dukungan ini akhirnya dijadwalkan dihapus pada jQuery 5.0
Lihat PR terkait, isu
Mengingat 3.0 dirilis 10 tahun lalu, ini cukup mengejutkan
Aku berterima kasih karena mereka tetap mendukung pengguna dan produk seperti itu
Masih banyak juga lab komputer sekolah yang memakai sistem lama
Upaya yang dicurahkan ke alat upgrade jQuery benar-benar mengagumkan
Aku masih mencintai sintaks chaining jQuery
15 tahun lalu aku menulis tutorial jQuery dalam bahasa Prancis, dan mendapat banyak view
Semoga aku ikut berkontribusi sedikit pada penyebaran jQuery