Di mana jQuery cocok dengan kerangka kerja seperti JavaScriptMVC, BackboneJS, SproutCore dan Knockout?

14

Saya telah dengan senang hati menggunakan JQuery selama 2 tahun terakhir dan telah cukup berhasil membuat beberapa fungsi yang sangat keren dengannya ... jadi saya sangat nyaman dengannya. Saya juga percaya masa depan web akan berlanjut di jalur sisi klien saat ini.

Namun...

Tantangan berikutnya tampaknya akan datang dalam bentuk berbagai kerangka kerja pengontrol: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (daftar berjalan).

Selain itu, ada beberapa alat AMD Loader yang bagus untuk digunakan seperti RequireJS atau LabJS dll. Namun, jQuery sekarang memiliki definedan thenkemampuan yang dipanggang.

Semakin sulit untuk melacak semuanya ...

Dan sekarang, tugas saya tampaknya mengevaluasi / memutuskan arah strategis untuk menggunakan beberapa bentuk kerangka kerja sisi klien MVC atau MVVM ... tapi saya punya banyak pertanyaan.

  • Di mana JQuery cocok dengan berbagai framework-controller yang disebutkan di atas?
  • Apakah JQuery digunakan bersama masing-masing atau apakah beberapa dari mereka memiliki ' JQuery -styled version' sendiri?
  • Apakah alat seperti RequireJS masih diperlukan jika Anda menerapkan salah satu dari berbagai kerangka kerja kontroler yang disebutkan di atas?
  • Apakah definedan thenkemampuan yang dimasukkan ke dalam JQuery sekarang menggantikan AMD Loader yang disebutkan di atas?
  • Mana yang tampaknya paling modular? (lihat catatan di bawah)

CATATAN:
Satu hal yang tidak saya inginkan dalam kerangka kerja masa depan adalah persyaratan harus menerima sejumlah besar fungsi yang tidak saya gunakan. Artinya, saya lebih suka menggunakan kerangka kerja yang benar-benar modular. Misalnya, untuk menggunakan jQuery UI Anda harus menerima banyak pustaka inti lain yang mungkin tidak Anda gunakan.

Saya akan bereksperimen dengan masing-masing, tetapi beberapa umpan balik NYATA akan bagus. Saya telah melihat beberapa pertanyaan 'serupa', tetapi tidak ada yang benar-benar menjawab kecenderungan di atas.

Terima kasih sebelumnya!

Tahanan NOL
sumber

Jawaban:

11

jQuery alat normalisasi lintas browser. Ini memberi Anda yang berikut

  • Utilitas DOM
  • Sistem acara
  • Ajax
  • Animasi
  • Utilitas ES5
  • beberapa hal lainnya

Backbone / knockout / yada / yada adalah perpustakaan mirip-MVC yang ada untuk membantu Anda menyusun dan menulis aplikasi modular. Anda hanya memerlukan ini jika Anda menginginkan strukturnya.

RequireJS / yada / yada adalah pemuat modul. Anda memerlukan beberapa bentuk pemuat modul jika Anda ingin menulis aplikasi modular.

Di mana JQuery cocok dengan berbagai framework-controller yang disebutkan di atas?

Seperti yang disebutkan, jQuery menormalkan browser. kerangka kerja pengontrol tidak. Anda tidak perlu jQuery tetapi Anda perlu beberapa cara untuk menormalkan browser.

Apakah JQuery digunakan bersama masing-masing atau apakah beberapa dari mereka memiliki 'versi JQuery' yang dipanggang?

Backbone / knockout / JavaScriptMVC tidak memiliki normalisasi browser yang dibuat sehingga Anda memerlukan alat untuk itu. Saya tidak yakin tentang SproutCore sepertinya memang ada banyak di sana.

Apakah alat seperti RequireJS masih diperlukan jika Anda menerapkan salah satu dari berbagai kerangka kerja kontroler yang disebutkan di atas?

Ini hanya diperlukan jika Anda menulis untuk menulis aplikasi modular. Cukup banyak ya.

Ada tiga rasa aplikasi modular

  • async membutuhkan loader seperti requireJS
  • sinkronisasi membutuhkan pemuat seperti modul8
  • menggunakan ruang nama dan hanya menyertakan file
  • paket seperti ender

Apakah kemampuan define dan kemudian dimasukkan ke dalam JQuery sekarang menggantikan AMD Loader yang disebutkan di atas?

Tidak. Kemampuan define yang dimasukkan ke dalam jQuery memungkinkan Anda untuk menggunakannya dengan AMD loader tanpa membungkus jQuery. Anda masih membutuhkan loader AMD. Kemampuan "then" hanyalah sedikit gula dari jQuery yang ditangguhkan.

Mana yang tampaknya paling modular? (lihat catatan di bawah)

Itu pertanyaan yang dikemukakan pendapat. Pendapat pribadi saya adalah bahwa semua kerangka kerja ini termasuk jQuery membengkak dan tidak modular.

Anda ingin modular, tulis perpustakaan Anda sendiri, tulis arsitektur Anda sendiri.

Namun jika Anda ingin yang kurang jahat saya akan memilih tulang punggung karena sederhana dan kecil atau tulang belakang yang serupa

Raynos
sumber
Terima kasih Raynos ... Saya selalu dapat mengandalkan Anda untuk jawaban yang bagus!
Tahanan NOL
@Marjan Saya menunggu orang lain yang mungkin juga mau mengirimkan masukan.
Tahanan NOL
@PrisonerZERO: tidak ada masalah sama sekali. Ketika Anda tampak senang dengan jawaban Raynos, komentar saya hanya dalam kasus Anda tidak tahu tentang menerima jawaban (saya tidak memeriksa profil Anda dan perwakilan Anda menyarankan Anda adalah pengguna yang cukup baru di sini)
Marjan Venema
2

Saya akan menjawab di JavaScriptMVC karena saya seorang kontributor:

Di mana JQuery cocok dengan berbagai framework-controller yang disebutkan di atas?

JavaScriptMVC bergantung pada jQuery dan menggunakannya secara luas.

Apakah JQuery digunakan bersama masing-masing atau apakah beberapa dari mereka memiliki 'versi JQuery' yang dipanggang?

JavaScriptMVC tidak memiliki fungsi bersaing dengan jQuery. Ini tidak benar dengan Backbone yang memiliki sistem acara sendiri. Tapi, apa pun yang ditambahkan tulang punggung atau tulang belakang sangat minim.

Apakah alat seperti RequireJS masih diperlukan jika Anda menerapkan salah satu dari berbagai kerangka kerja kontroler yang disebutkan di atas?

JavaScriptMVC hadir dengan sistem manajemen ketergantungan -> mencuri. Anda dapat menggunakan JavaScriptMVC dengan RequireJS, tetapi mencuri sebenarnya jauh lebih kuat dan berukuran sama dengan yang diunduh oleh pengguna.

Mana yang tampaknya paling modular? (lihat catatan di bawah)

Ini tidak ada pendapat. JavaScriptMVC sangat modular. Anda hanya menggunakan apa yang Anda butuhkan. Dibandingkan dengan Backbone atau tulang belakang, Anda dapat menggunakannya M, V, atau C bagian mandiri. Saat dirakit bersama, ukurannya hanya 1k lebih besar dari Backbone (saat menggunakan jQuery dan Underscore). Anda dapat melihat berbagai ukuran komponen dasar di sini: https://github.com/jupiterjs/javascriptmvc/issues/26

Tetapi JavaScriptMVC jauh lebih kuat (dalam hal fitur) vs Backbone atau Spine. Sebagai contoh, itu pengendali event templated praktis mencegah semua kebocoran memori. Berikut ini tooltip yang menyembunyikan dirinya ketika jendela diklik:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

Ini sangat penting dengan pendekatan MVC ketika kontrol Anda mendengarkan perubahan dalam model seperti:

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

Pengontrol akan mencabut ikatan otomatis semua penangan peristiwa eksternal ini.

Beberapa kekuatan lain hanya bagian MVC:

  • $ .Class adalah sistem kelas yang sangat kuat
  • $ .View dan $ .Model mendukung ditangguhkan
  • $ .Controller dapat 'rebind' event handler
  • $ .Model mendukung asosiasi, pengambil / penentu, default, validasi

Sekarang, JavaScriptMVC lebih dari sekadar bagian-bagian MVC-nya (yang merupakan bagian dari sub-proyek jQueryMX). Memiliki:

  • jQueryMX - fungsionalitas hilang jQuery seperti acara khusus, dom helpers, dll.
  • Mencuri - sistem manajemen ketergantungan. Tapi itu bisa melakukan hal-hal seperti mengambil aplikasi ajax dan membuatnya menjadi Google crawlable.
  • FuncUnit - Kerangka pengujian yang sangat kuat.

Sekarang, apa yang harus digunakan, sangat tergantung. Banyak hal bergantung pada apakah Anda membuat "aplikasi" atau "halaman". Sebuah aplikasi, yang perlu pengujian, manajemen ketergantungan, di mana Anda peduli dengan kebocoran memori, saya akan melihat JMVC atau SproutCore.

Jika Anda menempelkan beberapa widget dasar bersama, saya akan melihat tulang belakang atau tulang punggung.

Justin Meyer
sumber
"Tulang belakang atau tulang belakang, kamu bisa menggunakannya M, V, atau C bagian standalone." Kecuali masing-masing M, V dan C hanya sebesar tulang punggung dan tulang belakang.
Raynos
Itu tidak benar. Backbone 5k dengan ketergantungan garis bawah. Saya tidak yakin apa itu tulang belakang. Tapi ini rinciannya: Kelas: 1k, Pengendali: 1.74k, Model: 2.8k, $ .View: 1.6k, $ .String: .5k. Untuk total gabungan 8.6k. Itu 3k lebih, tetapi lebih banyak fitur yang bermanfaat.
Justin Meyer
Apakah Anda menggunakan JavaScriptMVC dengan sesuatu seperti kontrol Kendo UI? Apa kontrol lain?
Tahanan NOL
Ya, pustaka UI berbasis jQuery apa pun harus berfungsi dengan baik (asalkan menggunakan sistem acara jQuery untuk acara).
Justin Meyer
Saya harus mencatat bahwa Backbone dapat menggunakan Zepato alih-alih jQuery, membuatnya jauh lebih sedikit daripada gabungan JMVC MVC dengan jQuery. Tapi, Anda kehilangan sedikit tanpa jQuery.
Justin Meyer