Mengingat seberapa banyak pengembangan jQuery yang lebih sederhana, jika dibandingkan dengan JavaScript asli, apa yang membuat orang-orang melupakan perpustakaan seperti jQuery sama sekali?
Apakah ini karena jQuery memiliki keterbatasan atau lambat? Maksud saya, jika jQuery sangat mudah dibandingkan dengan javascript asli, apa alasan orang masih menggunakan javascript murni?
XMLHttpRequest
vsActiveXObject
, atauaddEventListener
vsattachEvent
, ataucss selectors
vsxpath selectors
vsno selector support
, dll ...) Pada browser terbaru sebagian besar masalah ini tidak ada, karena mereka mengikuti standar yang sama.Jawaban:
Mari kita bicara tentang mobil.
Oh, tunggu, kita sudah melakukannya - ingat saat itu kita bertemu, beberapa waktu yang lalu? Kami berbicara tentang mobil. Bahkan, Anda tampaknya cukup ahli dalam mobil. Anda dapat menjelaskan, secara terperinci, semua hal yang benar, salah, dan menarik tentang balapan Formula 1 terbaru. Anda hafal semua model Lamborghini, termasuk harga dan ketersediaannya. Anda bahkan memiliki pemikiran untuk membeli Ferrari 599 GTB Fiorano Anda sendiri dan menabung untuk itu (saya yakin makan malam steak tidak banyak membantu).
Sambil menjelaskan kesalahan Toyota dengan suara besar dan bersemangat, Anda tiba-tiba melompat dari kursi dan berteriak ke udara, mengayunkan kepalan tangan Anda tentang: "Sialan semuanya, aku ahli yang luar biasa dalam semua hal yang berhubungan dengan mobil! Aku ' Aku akan menjadi mekanik mobil! "
Jadi kamu pergi. Anda memiliki sebuah wawancara, Bos Man sama terkesannya dengan saya dengan pengetahuan Anda, dan Anda dipekerjakan. Klien pertama masuk. Koplingnya patah. Anda memeriksanya dan tidak tahu harus berbuat apa. Faktanya, Anda sama sekali tidak tahu bagaimana mengikuti saran yang diberikan Bos Man kepada Anda. Anda dipecat.
Tapi bagaimana mungkin !? Anda tahu segalanya tentang mobil! Kecuali untuk ... segala sesuatu tentang mobil. Anda bisa mengetahui bahwa mobil impian Anda memiliki mesin V12, tetapi Anda tidak tahu apa artinya itu.
Jadi Anda bukan mekanik mobil, sungguh - Anda seorang penggila mobil. Dan sampai Anda belajar bagaimana mobil bekerja , Anda akan tetap menjadi penggila.
Sekarang izinkan saya bertanya kepada Anda. Bagaimana cara
$.fn.text
kerjanya? Dan bagaimana$.fn
? Apa yang sebenarnya mereka maksud? Bagaimana cara$(something)
mengembalikan benda raksasa yang berisi benda, dan benda apa itu sebenarnya? Bisakah Anda meniru fungsi mereka, setidaknya sedikit, secara teori? Bisakah Anda mengatasinya tanpa jQuery?Mengatakan bahwa "JavaScript asli sulit" hanya ... salah. Pertama dan terutama, karena JavaScript sebagai bahasa tidak ada hubungannya dengan DOM , yang terutama merupakan abstrak jQuery. Kedua karena begitu Anda mempelajari sedikit tentang DOM, Anda sudah dapat menjelajahi bug lintas-peramban yang paling umum. Tapi hanya sedikit rahasia - semuanya sulit pada awalnya. Divisi panjang adalah menyebalkan di kelas 5.
Sebagai analogi kedua untuk jawaban ini: jQuery adalah JavaScript-DOM (bukan JavaScript bahasa, hanya DOM) seperti
Array.prototype.forEach
inifor
. Ini bekerja, untuk 99% kasus. Dan itu bekerja dengan baik. Tapi untuk itu 1% yang tidak tercakup, Anda perlu tahu cara menggunakanfor
loop, jika hanya untuk menjadi praktis. Seluruh jawaban ini didasarkan pada sisi "murni" dari pertanyaan, dan bahkan bukan dari sisi teknis (ukuran perpustakaan, misalnya, dan beberapa hal lain seperti dijelaskan dalam jawaban Michael Dorrant). Karena saya suka JavaScript dan ketika orang-orang sepertinya membuangnya dengan santai sambil mengatakan "pah, para javascript yang konyol" dan melambaikan sarung tangan putih yang mewah, itu berujung pada moralitas.Jika Anda dapat menerima kenyataan bahwa Anda akan selalu menjadi penggemar JavaScript, lalu siapakah saya untuk menghentikan Anda? Tetapi jika Anda ingin menjadi programmer JavaScript, pertama-tama Anda harus memiliki pengetahuan untuk setidaknya memilih antara menggunakan jQuery (atau perpustakaan lain) dan tidak menggunakan perpustakaan. Pelajari DOM. Pelajari cara menggunakannya. Tulis perpustakaan kecil Anda sendiri atau hanya beberapa koleksi fungsi pembantu. Dan begitu Anda memiliki pengetahuan tentang DOM, dan Anda memilih untuk menggunakan jQuery - godspeed. Kemalasan diberikan bagi mereka yang bekerja keras.
sumber
Alasan saya tahu:
Ketika kebutuhannya sangat minim, katakan 1 klik.
Ketika kecepatan unduh sangat penting dan pustaka jQuery terlalu besar DAN Anda tidak perlu menulis banyak kode (khusus) untuk menggantinya.
Saat berintegrasi dengan teknologi lain, terkadang raw js lebih baik.
Ketika bekerja pada sistem warisan (alias 'produksi') sudah ditulis dalam js dengan pola yang mapan.
sumber
jQuery hanyalah sebuah kerangka - seperangkat alat yang ditulis dalam JavaScript. Dengan menggunakan seperangkat alat itu Anda masih menggunakan JavaScript. Beberapa orang lebih suka menulis JavaScript menggunakan alat yang disediakan jQuery, beberapa memilih untuk tidak, yang lain memilih set alat lainnya.
Beberapa alasan Anda mungkin ingin menulis JavaScript "murni" tanpa jQuery:
sumber
jQuery, seperti pustaka atau kerangka kerja apa pun, menambahkan lapisan bug lainnya . Saya menyukainya, tetapi saya juga kehilangan satu hari mencari bug yang ternyata di jQuery core dan bukan kode saya (kejadian langka, tapi tidak jarang).
Selain itu saya tidak menemukan alasan lain untuk tidak menggunakannya:
TETAPI itu tidak boleh digunakan sebagai pengganti pengetahuan Javascript. Jika Anda tidak tahu bagaimana melakukannya dalam Javascript murni, Anda mungkin bisa pergi dengan perpustakaan pada awalnya tetapi dalam jangka panjang Anda akan membayarnya.
Dan tentu saja ada kita semua yang telah terkunci dalam pertempuran fana dengan IE6 selama beberapa tahun, dan tidak akan dengan mudah melepaskan trik sekolah lama kita demi mainan baru yang mengkilap.
sumber
The huge gallery of plugins help me write prototypes in very short times
... Hanya prototipe, saya menghindarinya pada kode produksi bila memungkinkan. Ada beberapa plugin dengan kode yang sangat bagus tentu saja, tetapi Anda harus mencari sangat keras untuk mereka ...Di lingkungan browser Anda memerlukan alat normalisasi lintas browser. Alat seperti itu datang dalam dua rasa
Secara umum Anda dapat menggunakan utilitas ini dalam satu dari tiga cara
addClass
atausetText
seluruh kode Anda kapan dan di mana Anda membutuhkannyaAnda memerlukan beberapa mekanisme normalisasi jika tidak Anda mendapatkan dukungan browser lintas nol.
Sedangkan untuk menggunakan yang sudah ada, itu bagus. Saya tidak akan menggunakan jQuery. Secara pribadi saya saat ini sedang menulis perpustakaan saya sendiri ( DOM-shim itu memperbaiki browser tanpa mengekspos API kepemilikan asing. Ini mengubah browser Anda menjadi satu browser standar berperilaku baik).
sumber
Jika Anda tidak memerlukan abstraksi DOM, cross-browser, dan dukungan browser lama - Anda dapat dengan mudah pergi tanpa jQuery.
Ini adalah kasus ketika Anda mengembangkan ekstensi browser, skrip greasemonkey (kadang-kadang), angka-angka, mengembangkan untuk Node.js atau lingkungan non-browser lainnya.
sumber
Bersamaan dengan jawaban lain di sini, terutama jawaban Michael Durrant , saya melihat kecepatan adalah alasan utama bagi saya untuk memilih menggunakan JavaScript mentah.
Akhir-akhir ini saya telah mengerjakan banyak animasi atau tugas CPU-intensif lainnya dan beberapa kali JavaScript mentah jauh, lebih cepat daripada jika saya melalui jQuery.
Salah satu contoh adalah di mana saya ingin mengubah opacity dari suatu
position: fixed
elemen dalam kaitannya dengan seberapa jauh pada halaman yang telah digulir pengguna. Efeknya terlalu lambat ketika saya menggunakan jQuery untuk ini, menyebabkan gulir menjadi tersentak-sentak dan efek fade hancur. Saya beralih menggunakan JavaScript lurus dan semuanya mulus di semua kecuali IE <= 8.sumber
Saya perlu mengawali jawaban saya dengan kejujuran terbuka. Saya suka jQuery. Itu membuat hidup saya jauh lebih mudah, dan membuat kode JavaScript lebih deklaratif, yang merupakan cara saya percaya segala sesuatunya bekerja.
jQuery melakukan banyak hal ...
Ya, Anda dapat menambahkan plugin
Ya Anda dapat memperluas penyeleksi
Ya itu menyederhanakan animasi
tapi jQuery tidak melakukan semuanya
Pernahkah Anda mencoba bekerja dalam berbagai konteks jendela dengan jQuery? jQuery payah berurusan dengan konteks jendela yang berbeda karena mempertahankan konteks asli
window
dandocument
dari jendela di mana ia dipanggil.Saya telah menulis beberapa kode di sana-sini untuk membuat popout *, dan jQuery dapat dengan mudah menghalangi apa yang saya coba capai. Menambahkan referensi baru ke jQuery di jendela anak sering dapat memperburuk keadaan dengan membuatnya lebih sulit untuk mengetahui konteks jQuery mana yang sedang digunakan.
* pikirkan popout Gmail untuk menulis email di jendela baru, bukan iklan spam
Gunakan ketika membuat kode lebih sederhana
Waktu untuk menggunakan jQuery adalah ketika Anda dapat membuat kode Anda lebih sederhana, lebih pendek, lebih mudah dibaca, dan lebih cepat.
Waktu untuk tidak menggunakan jQuery adalah ketika itu tidak akan membuat kode Anda lebih sederhana, lebih pendek, lebih mudah dibaca, atau lebih cepat. Jika Anda perlu memperbaiki pengaturan waktu pemuatan, Anda mungkin tidak ingin menggunakan jQuery karena overhead acara.
sumber
Seperti yang Anda ketahui, jQuery adalah kerangka kerja tujuan umum yang menyediakan banyak metode yang banyak dari kita tidak gunakan dalam proyek kami. (Beberapa dari mereka saya belum pernah menggunakan sama sekali.)
Ada dua alasan utama untuk tidak menggunakan jQuery atau kerangka kerja mapan lainnya.
1. Proyek tidak cukup besar atau kompleks untuk menggunakan kerangka kerja seperti itu: Dalam hal ini, pembuat kode mengambil keputusan berdasarkan pengalaman dan pengetahuannya dalam JavaScript. Ini akan membantunya mengurangi berat halaman dan juga lebih mengontrol kode.
2. Coder mengembangkan kerangka kerjanya sendiri Saya telah melihat sebuah proyek di perusahaan saya yang memiliki kerangka JavaScript sendiri. Alasan yang mereka kutip adalah bahwa jika mereka menggunakan jQuery dan ada bug untuk memperbaikinya, mereka harus menunggu sampai versi berikutnya. Selain itu, jika ada fitur yang akan ditambahkan, mereka perlu meminta tim jQuery untuk itu atau menambahkan plugin meskipun menjadikannya plugin tidak akan menjadi ide yang baik (mereka memberi contoh telah menggunakan
.live
hal serupa di kerangka kerja bahkan sebelum secara resmi ditambahkan ke JQuery). Memiliki kerangka kerja Anda sendiri memberi Anda lebih banyak kontrol terhadap kode. Kerugiannya adalah Anda harus menemukan kembali roda terkait masalah kompatibilitas browser, dll. Selain itu, jika proses pengembangannya tidak baik, kerangka kerja Anda akan menggembung dan hanya akan menambah waktu untuk mempertahankannya.sumber
Mike
Saya pikir orang lindung nilai terhadap menggunakan beberapa perpustakaan karena ketergantungan pada infrastruktur / solusi perpustakaan untuk melakukan beberapa tugas.
Tapi mari kita berhati-hati untuk mengingat bahasa datang dan pergi seperti perpustakaan dalam jangka panjang.
Jadi mungkin itu lingkup temporal. Mungkin orang ragu untuk berinvestasi di perpustakaan yang mungkin tidak ada di sana - atau memiliki banyak momentum di belakangnya dalam jangka panjang.
Diri? Saya tidak keberatan menggunakan JQuery pada khususnya. Saya juga melihat katakan Box2d.js atau three.js dan lebih suka merangkul mereka bahkan jika umur simpan jangka pendek daripada melewatkan buah apa yang mereka tawarkan.
Intinya Mike ada risiko dalam kehidupan rak perpustakaan yang Anda pilih, dan saya pikir beberapa di komunitas javascript mungkin telah mengalami kerugian karena perpustakaan atau proyek akan segera berakhir, dan mungkin baru saja mengatakan - tidak pernah lagi.
sumber
Saya akan mengatakan bahwa masalah utamanya adalah semakin banyak orang (mayoritas?) Tidak tahu lagi bagaimana cara membuat kode dalam JavaScript. Jika jQuery tidak bisa melakukan sesuatu, mereka tidak bisa melakukannya.
Sudah sampai pada titik di mana contoh-contoh javascript biasa menjadi sulit didapat. Tidak ada yang menentang jQuery; itu adalah kerangka kerja yang bagus. Saya mendapat banyak ide bagus darinya, tetapi orang-orang harus mempelajari JavaScript terlebih dahulu baru kemudian mempelajari framework. Saya pribadi menemukan kerangka kerja saya sendiri lebih fleksibel dan lebih sesuai dengan kebutuhan saya, dan ya saya kadang-kadang menemukan kembali roda tetapi kontrol total dan memiliki kontrol atas perbaikan bug adalah manfaat besar asalkan Anda bersedia memasukkan pekerjaan ke dalam pembelajaran JavaScript.
Tidak hanya itu. Mengetahui JavaScript vanilla membuatnya lebih menyenangkan untuk dimainkan dan bereksperimen dengan fitur-fitur yang lebih baru daripada menunggu implementasi berbasis kerangka kerja. Juga, saya tidak menyalahkan jQuery untuk ini karena ini terutama perpustakaan DOM , tetapi dapat menyulitkan untuk skala dengan proyek-proyek besar. Kerangka kerja lain melakukan pekerjaan yang lebih baik dalam hal ini; Prototipe muncul di pikiran.
Singkatnya, ini adalah kerangka kerja yang hebat, tetapi tidak semua orang bisa berhasil.
sumber
Saya dapat menambahkan dua alasan lagi yang tidak disebutkan:
Ketika saya mengambil teknologi baru, sering kali, saya akan mulai dengan konstruksi tingkat rendah sebelum pergi ke tingkat yang lebih tinggi. Saya terutama adalah pengembang C ++ / C #, tetapi beberapa saat yang lalu ketika saya pertama kali mulai bermain-main dengan HTML / CSS / JavaScript, saya memilih untuk tidak menggunakan kerangka kerja apa pun karena saya ingin pertama-tama memahami teknologi (yaitu, JavaScript bahasa itu sendiri) bahwa kerangka itu dibangun di atas.
Saya tidak tahu seberapa umum hal ini, tetapi bagi saya tampaknya ada banyak orang yang ketika mereka melihat kerangka kerja / teknologi / bahasa berikutnya, tanggapan pertama mereka adalah, "bukan API lain untuk saya pelajari!" Mereka tidak peduli betapa mudahnya jQuery, tetapi mereka hanya melihatnya sebagai penghalang di antara mereka dan memberikan pekerjaan menggunakan metode "benar dan sudah dicoba". Ini adalah kategori orang yang sama yang menolak untuk menggunakan perpustakaan Boost atau STL dan terus menggunakan malloc untuk hampir semuanya. Anda bertanya mengapa mereka memilih JavaScript murni daripada jQuery dan pada kenyataannya mereka tidak pernah memilih karena sebagian besar waktu mereka menolak untuk mengevaluasi jQuery sejak awal dan sangat senang dengan laju perkembangan mereka saat ini, tidak peduli seberapa lambat itu.
sumber
jQuery adalah perpustakaan yang ditulis dalam dan untuk JavaScript. Idenya adalah ini membuat semua hal-hal JavaScript sulit / membosankan membosankan, sehingga mempercepat waktu pengembangan dan membuat skrip Anda lebih mungkin untuk bekerja lintas-browser.
Apa yang membuat jQuery lebih disukai untuk digunakan:
Berikut adalah alasan yang membuat JavaScript lebih disukai untuk digunakan daripada jQuery:
Karena alasan ini, saya suka menggunakan JavaScript untuk menghindari kerangka kerja jQuery. Jauh lebih baik untuk belajar JavaScript daripada tergantung pada perpustakaan seperti itu ...
Bahkan jika Anda ingin memperpanjangnya, Anda harus menulis kode dalam JavaScript. Yang juga merupakan pembicaraan besar. Pengembang menjadi tergantung pada perpustakaan ini, sehingga untuk memiliki kontrol pada proyek, JavaScript lebih baik daripada menggunakan kerangka kerja.
sumber
Saya pikir orang menggunakan jQuery karena lebih sederhana, lebih mudah, dan lebih kuat, dan karena itu membantu mereka melupakan IE. Selain itu, untuk fungsi yang disesuaikan orang menggunakan javascript. Coba rujuk DOC untuk lebih jelasnya
sumber