Pertanyaan lama, tetapi setengah dekade kemudian, perlu ditinjau kembali. Di sini saya hanya membahas aspek pemilih jQuery.
document.querySelector[All]
didukung oleh semua browser saat ini, turun ke IE8, sehingga kompatibilitas tidak lagi menjadi masalah. Saya juga tidak menemukan masalah kinerja untuk dibicarakan (seharusnya lebih lambat daripada document.getElementById
, tetapi pengujian saya sendiri menunjukkan bahwa itu sedikit lebih cepat).
Oleh karena itu ketika memanipulasi elemen secara langsung, itu lebih disukai daripada jQuery.
Sebagai contoh:
var element=document.querySelector('h1');
element.innerHTML='Hello';
adalah jauh lebih unggul untuk:
var $element=$('h1');
$element.html('hello');
Untuk melakukan apa saja, jQuery harus menjalankan melalui seratus baris kode (saya pernah menelusuri kode seperti di atas untuk melihat apa yang sebenarnya dilakukan jQuery dengannya). Ini jelas buang-buang waktu semua orang.
Biaya signifikan lain dari jQuery adalah kenyataan bahwa ia membungkus segala sesuatu di dalam objek jQuery baru. Overhead ini sangat boros jika Anda perlu membuka objek lagi atau menggunakan salah satu metode objek untuk menangani properti yang sudah terpapar pada elemen asli.
Di mana jQuery memiliki keuntungan, bagaimanapun, adalah bagaimana menangani koleksi. Jika persyaratannya adalah untuk mengatur properti beberapa elemen, jQuery memiliki each
metode bawaan yang memungkinkan sesuatu seperti ini:
var $elements=$('h2'); // multiple elements
$elements.html('hello');
Untuk melakukannya dengan Vanilla JavaScript akan membutuhkan sesuatu seperti ini:
var elements=document.querySelectorAll('h2');
elements.forEach(function(e) {
e.innerHTML='Hello';
});
yang beberapa menemukan menakutkan.
Selektor jQuery juga sedikit berbeda, tetapi browser modern (tidak termasuk IE8) tidak akan mendapatkan banyak manfaat.
Sebagai aturan, saya memperingatkan agar tidak menggunakan jQuery untuk proyek baru :
- jQuery adalah perpustakaan eksternal yang menambah overhead proyek, dan ketergantungan Anda pada pihak ketiga.
- Fungsi jQuery sangat mahal, dari segi pemrosesan.
- jQuery menerapkan metodologi yang perlu dipelajari dan dapat bersaing dengan aspek lain dari kode Anda.
- jQuery lambat untuk mengekspos fitur baru dalam JavaScript.
Jika tidak ada hal di atas yang penting, maka lakukan apa yang Anda mau. Namun, jQuery tidak lagi penting untuk pengembangan lintas-platform seperti dulu, seperti JavaScript dan CSS modern berjalan lebih jauh dari sebelumnya.
Ini tidak menyebutkan fitur-fitur lain dari jQuery. Namun, saya pikir mereka juga perlu melihat lebih dekat.
querySelector
metode. (3) Melakukan panggilan AJAX jauh lebih cepat dan lebih mudah dengan jQuery. (4) Dukungan di IE6 +. Saya yakin ada banyak poin yang bisa dibuat juga.