Apakah ada kerangka kerja JavaScript MVC (mikro-)? [Tutup]


133

Apakah ada kerangka kerja JavaScript MVC (mikro-) sisi klien ?

Saya memiliki bentuk HTML yang agak rumit, dan itu akan mendapat manfaat dari pola MVC.

Saya membayangkan solusi yang baik akan memberikan yang berikut:

  • Model dan View memperbarui Pengontrol ketika nilai berubah (pola Pengamat)
  • Populasikan model dari data formulir saat halaman dimuat
  • Mengisi formulir dari model ketika model berubah

Ajax, komet, JSONP , dan semua jazz itu benar-benar berlebihan.


2
Apakah saya salah atau ini hanya ide yang buruk (atau mungkin kerangka kerja yang sesuai dengan kata kunci) ?.

2
Saya mulai mengerjakan sesuatu beberapa saat yang lalu karena saya memiliki perasaan yang sama dengan Anda. Ini seminimal mungkin, AMD, dan tanpa informasi sebanyak yang saya bisa dapatkan. Itu berarti tidak ada jQuery dll. Saya tahu ini sudah ditutup sekarang, tapi saya pikir ini mungkin jenis yang Anda cari: github.com/Wolfy87/tarmac - Saya belum melakukan banyak hal dengan itu baru-baru ini karena saya pikir saya akan menjadi satu-satunya pengguna.
Olical


Lihat TodoMVC , yang membandingkan (hampir) semua kerangka kerja JavaScript yang tersedia dengan menerapkan Aplikasi TODO sederhana.
koppor

Jawaban:



33

JavaScriptMVC adalah solusi terbaik. Semuanya adalah pendekatan plugin yang memungkinkan Anda memilih hanya fitur yang Anda butuhkan. Pada 2.0, ini didasarkan pada jQuery.

Untuk meningkatkan situs web Anda secara progresif, itu tergantung pada pengguna karena JMVC hanya menyediakan lapisan tengah untuk pengembangan - terserah Anda untuk membuat sendiri pilihan desain itu.

Namun, JavaScriptMVC hanyalah tujuan umum perpustakaan JavaScriptMVC karena pengendali berbasis delegasi acara yang kuat.

Delegasi acara memungkinkan Anda terhindar dari harus melampirkan penangan acara, dan cukup membuat aturan untuk halaman Anda.

Akhirnya, JMVC lebih dari sekedar arsitektur MVC. Ini memiliki semua bagian dari siklus pengembangan yang dicakup dengan:

  • Pembuat Kode
  • Selenium dan Env.js melakukan pengujian terintegrasi
  • Mesin Dokumentasi
  • Concat + Kompres Otomatis
  • Deteksi dan pelaporan kesalahan

1
+1 untuk JavascriptMVC - Saya sudah menggunakannya untuk beberapa aplikasi sekarang, dan itu cukup bagus. Lewati contoh pembuatan kode di situs web. Saya membayangkan itu hanya ada untuk menenangkan para fanboys Rails. :) Mulai dengan model objek JQueryMX dasar, dan buat controller.
Chris Jaynes

1
Sejak saya membuat komentar ini, saya telah beralih menggunakan Require and Spine. Pada akhirnya mereka lebih kecil, lebih elegan, dan kurang 'Enterprisey' daripada JMVC. JMVC menyenangkan bagi tim pengembang Java kami untuk membuat penyesuaian ke JS, tetapi itu tidak bertahan begitu Anda mulai memahami JS dengan lebih baik ...
Chris Jaynes

MVC bagian dari JMVC sekarang can.js
PHearst

21

Spine memiliki API yang mirip dengan Backbone tetapi jauh lebih kecil. Ini fitur warisan prototypal.


2
Ini juga ditulis dalam CoffeeScript dan menggunakan gaya kelas CoffeeScript - bukan berarti itu kemenangan besar, tapi itu agak bagus.
kutu buku yang dibayar

1
Saya berasumsi bahwa itu lebih kecil dari tulang punggung? Kode naskah lebih ringkas ...
Brenden

Saya suka Spine. Gunakan dengan RequireJS untuk kehebatan murni. Jangan biarkan fakta bahwa itu CoffeeScript membuat Anda takut, itu juga berfungsi dengan baik dengan JS normal ...
Chris Jaynes

Dukungan browser adalah IE> = 9 jadi periksa yang cocok dengan profil pengunjung Anda.
Richard

20

AngularJS bekerja dengan baik bersama dengan jQuery dan akan banyak membantu Anda dengan struktur MVC dan pemisahan kekhawatiran yang ketat.

Lingkungan pengujian penuh dan Injeksi Ketergantungan termasuk ...

Lihat di http://angularjs.org


Angularjs adalah yang terbaik sejauh ini di akhir 2013 .... Saya pikir ....
Tony Bao

15
angular bukan kerangka mikro: /
iConnor

1
Setuju, Angular bukan kerangka kerja mikro.
Vojta

2
ya, juga kurva belajarnya tidak proporsional manfaatnya dibandingkan dengan kerangka kerja lain.
vsync

4
sudut adalah kebalikan dari kerangka kerja mikro. itu binatang buas.
Hasen


14

Saya pikir ini terlihat seperti sesuatu yang harus Anda periksa: http://knockoutjs.com/

(Sebagai programmer silverlight / wpf ini adalah perpustakaan yang membuat saya akhirnya mulai belajar javascript. Hal ini didasarkan pada pola Model-View-View-Model (MVVM), bagi saya saat ini sepertinya pilihan yang bagus!)


Sebagai programmer silverlight / wpf saya mengevaluasi sistem gugur, backbone, dan beberapa lainnya. Pada akhirnya saya beralih ke Angular. Ini memiliki binding dan BANYAK lagi.
jonperl


8

Ember.js

Ini adalah tiga fitur yang membuat Ember senang digunakan:

  1. Binding
  2. Properti yang dihitung
  3. Template pembaruan otomatis

Binding

Gunakan binding untuk menjaga properti di antara dua objek berbeda dalam sinkronisasi. Anda cukup mendeklarasikan pengikatan sekali, dan Ember akan memastikan bahwa perubahan disebarkan ke kedua arah.

Inilah cara Anda membuat ikatan antara dua objek:

MyApp.president = Ember.Object.create({
  name: "Barack Obama"
});

MyApp.country = Ember.Object.create({
  // Ending a property with 'Binding' tells Ember to
  // create a binding to the presidentName property.
  presidentNameBinding: 'MyApp.president.name'
});

MyApp.country.get('presidentName');
// "Barack Obama"

Bindings memungkinkan Anda untuk merancang aplikasi menggunakan pola MVC (Model-View-Controller), lalu dengan mudah mengetahui bahwa data akan selalu mengalir dengan benar dari lapisan ke lapisan.

Properti yang Dihitung

Properti yang dihitung memungkinkan Anda untuk memperlakukan fungsi seperti properti. Properti terkomputasi berguna karena mereka dapat bekerja dengan binding, sama seperti properti lainnya.

Memperbarui Templat Otomatis

Ember menggunakan Handlebars, perpustakaan templating semantik. Untuk mengambil data dari aplikasi JavaScript Anda dan memasukkannya ke dalam DOM, buat tag dan masukkan ke dalam HTML Anda, di mana pun Anda ingin nilai muncul:

<script type="text/x-handlebars">
  The President of the United States is {{MyApp.president.fullName}}.
</script>

2
adalah bara menguntungkan untuk digunakan di atas backbone dengan cara apa pun .... jika spesifikasinya tidak begitu jelas pada tahap awal ..
Bijendra

4
Saya memang suka emberJS, tapi ini bukan "mikro" tapi BESAR karena kerangka kerjanya yang datar
iConnor

1
Menggunakan Ember dan mikroframework dalam kalimat yang sama seharusnya tidak diizinkan.
Awalan

8

Stapes.js

Pengungkapan penuh: saya penulis perpustakaan ini :)

Jika Anda mencari sesuatu yang sangat kecil (1.5kb minified / gzipped) lihat, dan katakan padaku jika Anda menyukainya.


Tampak hebat pada pandangan pertama! Saya suka fokus Anda pada pewarisan prototypal (tidak ada kelas simulasi, dan tidak ada newoperator yang membingungkan ). Apa yang tampaknya tidak perlu lagi eachdan lagi map. Saya sudah memilikinya di Underscore.js dan jQuery .
feklee

7

Jika kebutuhan Anda benar - benar sederhana, Anda dapat menulis MVC sederhana sendiri seperti yang dilakukan Alex Netkachov .

Contohnya dibangun di atas dojo (Catatan: mereka tidak bekerja untuk saya di halamannya karena file dojo.js yang hilang), tetapi Anda dapat mengikuti pola dalam Javascript biasa.


4

Ini mungkin berlebihan untuk apa yang Anda butuhkan, tetapi SproutCore adalah kerangka kerja MVC, dan itu tidak terlihat lebih berat daripada JavaScriptMVC atau TrimPath's Junction .

Sayangnya, tak satu pun dari ini tampaknya dibangun di atas prinsip peningkatan progresif .


1
Komponen MVC inti JavaScriptMVC sekitar 1k lebih besar dari Backbone yang di-gzip (sambil memiliki sejumlah fitur lainnya). Dan JMVC sepenuhnya dapat membangun aplikasi yang semakin ditingkatkan. Anda baru saja membuang lapisan Model.
Justin Meyer

3

Kerangka kerja ActionScript MVC PureMVC yang populer baru-baru ini di-porting ke JavaScript. Saya belum memiliki kesempatan untuk mencobanya, tetapi saya yakin itu bagus.


Saya suka untuk flex. Sederhana dan kuat.
Glenn

3

Silakan juga checkout jquery-claypool .

jquery-claypool adalah kerangka kerja mvc kecil, cepat, dan tersedia yang dibangun di atas jquery, berdasarkan pengalaman saya dengan django, rails, spring dll. Bobotnya sangat ringan dan berjalan baik pada klien dan di lingkungan server.

ini menyediakan kerangka kerja routing untuk MVC bersih, kategori logging, filter (aop), pembuatan pengendali yang malas, inversi kontrol, konvensi-konfigurasi lebih dan tidak banyak lagi dengan desain.

itu tidak melakukan apa pun yang sudah dilakukan jquery, terasa seperti jquery, dan bekerja seperti kerangka kerja yang baik seharusnya: sederhana.

jquery-claypool

Semoga Anda memeriksanya.


Bagaimana Anda melihat Claypool dalam kaitannya dengan Backbone?
Pepijn





2

UPDATE 2016: Sammy.js tampaknya ditinggalkan.

Lihat Sammy.js

Teks dari situs:

Sebuah webframework kecil dengan kelas.

  • Inti KECIL Sammy hanya 16K terkompresi dan 5.2K dikompresi dan di-gzip
  • MODULAR Sammy dibangun di atas sistem plugin dan adaptor. Hanya sertakan kode yang Anda butuhkan. Juga mudah untuk mengekstrak kode Anda sendiri menjadi plugin yang dapat digunakan kembali.
  • BERSIH Seluruh API dirancang agar mudah dipahami dan dibaca. Sammy mencoba mendorong enkapsulasi dan desain aplikasi yang baik.
  • MENYENANGKAN Apa poin sebenarnya dari pembangunan jika tidak menyenangkan. Sammy mencoba mengikuti pendekatan MATZ. Ini dioptimalkan untuk kebahagiaan pengembang.

Bisakah Anda memperluas, pada apa itu MATZ?
kstep

Yukihiro "Matz" Matsumoto, pencipta ruby ​​sering mengatakan bahwa ia "berusaha membuat Ruby alami, tidak sederhana," dengan cara yang mencerminkan kehidupan. Jadi perangkat lunak harus terasa alami bagi pengguna. Ini dimaksud dengan pendekatan MATZ.
Bijan


1

CorMVC, mudah dimengerti dan memulainya, berbasis jquery dan tidak bergantung pada teknologi server apa pun


1

Saya telah mengembangkan kerangka kerja MVC Javascript yang sangat sederhana yang disebut MCV . Itu tidak melakukan persis apa yang Anda minta, tetapi mudah diperluas dengan pembantu. Bagaimanapun, itu pasti mikro (1,9 kb dikemas).

Ini bekerja kurang lebih seperti Jamal, tetapi saya memutuskan untuk memutar sendiri karena dua alasan:

  • hapus ketergantungan jQuery (walaupun saya sering menggunakannya bersama jQuery)
  • membuatnya bisa diperluas dengan pembantu. Ini adalah perilaku, komponen, dan pembantu CakePHP yang analog.


1

Saya memutakhirkan AngularJS (pengungkapan penuh, saya terlibat dalam cara yang terbatas dengan upaya dev sudut) dan saya sangat bersemangat tentang hal itu. Saya melakukan perbandingan berdampingan mengambil satu fitur untuk proyek internal (maaf tidak punya signoff untuk membagikannya) dan mengimplementasikannya di AngularJS dan Backbone. Itu adalah latihan yang bagus dan pada akhirnya, saya sangat condong ke arah Angular. Pengembang inti hebat dalam menjawab pertanyaan dan mereka telah melakukan pekerjaan yang sangat bagus dengan pengintegrasian data bawaan, pengujian unit / e2e dan dokumentasi. Ini masih dalam versi beta dengan 1.0 keluar dalam waktu dekat. Beta sangat stabil.

Ada sedikit perubahan paradigma, dan mereka menggunakan pendekatan yang cukup berbeda dari kebanyakan. Mengintegrasikan plugin jquery favorit Anda membutuhkan sedikit usaha tetapi bisa dilakukan dan telah dilakukan (contr-angular pada github).

Saya akan mengatakan (dan ini adalah masalah bagi kebanyakan kerangka kerja js-centric), pastikan untuk menyelidiki bagaimana membuat konten Anda ramah-SEO (jika penting bagi Anda). Sejak bergabung dengan komunitas sudut pada bulan Juni, saya perhatikan minatnya meningkat dan sejumlah orang membuat posting yang mengatakan bahwa mereka telah melihat Backbone dan yang lainnya tetapi sangat menyukai apa yang mereka lihat di Angular.








0

Can.js memiliki semua yang Anda butuhkan dan hanya berbobot 8 KB. Ini mengambil bit terbaik dari JavaScriptMVC dan menyaringnya menjadi satu kerangka kerja kecil, namun kickass dengan pengamat, widget, mengikat, karya-karya. Ini kompatibel dengan kerangka kerja utama ( jQuery , Dojo Toolkit , MooTools , dll.). Dokumentasi sangat bagus dan penulis responsif. Ini benar-benar layak untuk dilihat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.