Bir JavaScript MVC (mikro-) çerçevesi var mı? [kapalı]


133

İstemci tarafı JavaScript MVC (mikro-) çerçeveleri var mı?

Oldukça karmaşık bir HTML formum var ve MVC modelinden faydalanacak.

İyi bir çözümün aşağıdakileri sağlayacağını hayal ediyorum:

  • Model ve Görünüm, değerler değiştiğinde Denetleyiciyi günceller (Gözlemci modeli)
  • Sayfa yüklendiğinde modeli form verilerinden doldurun
  • Model değiştiğinde formu modelden doldurun

Ajax, kuyruklu yıldız, JSONP ve tüm bu cazlar aşırı derecede aşırıya kaçıyor .


2
Yanlış mıyım yoksa bu sadece kötü bir fikir mi (veya belki de bir sözcük terimiyle uyumlu mu?).

2
Bir süre önce bir şey üzerinde çalışmaya başladım çünkü seninle aynı hislere sahiptim. Olabildiğince az, AMD ve alabildiğim kadar açık değil. Hiçbir jQuery vb Bunu biliyorum Bunun anlamı artık kapatıldı, ama bu bence belki aradığınız şey türüdür be: github.com/Wolfy87/tarmac - ben düşündüm ki çünkü son zamanlarda onunla çok yapmadıysanız tek kullanıcı olurdu.
Olical


Basit bir TODO Uygulaması uygulayarak mevcut tüm JavaScript çerçevelerini (neredeyse) karşılaştıran TodoMVC'ye bir göz atın .
koppor

Yanıtlar:



33

JavaScriptMVC mükemmel bir çözümdür. Her şey bir eklenti yaklaşımı sadece ihtiyacınız olan özellikleri seçmenizi sağlar. 2.0 itibariyle jQuery tabanlıdır.

Web sitenizi aşamalı olarak geliştirirken, JMVC geliştirme için sadece orta bir katman sağladığı için kullanıcıya bırakılmıştır - bu tasarım seçimini kendiniz yapmak size kalmıştır.

Ancak, güçlü olay yetkisi tabanlı denetleyicileri nedeniyle JavaScriptMVC en iyi genel amaçlı JavaScriptMVC kitaplığıdır.

Etkinlik yetkilendirmesi, etkinlik işleyicileri eklemek zorunda kalmadan kaçmanıza ve sayfanız için kurallar oluşturmanıza olanak tanır.

Son olarak, JMVC bir MVC mimarisinden çok daha fazlasıdır. Geliştirme döngüsünün tüm bölümleri aşağıdakilerle kaplıdır:

  • Kod Üreteçleri
  • Selenium ve Env.js entegre testi
  • Dokümantasyon Motoru
  • Otomatik Concat + Sıkıştır
  • Hata tespiti ve raporlama

1
JavascriptMVC için +1 - Şimdi birkaç uygulama için kullandım ve oldukça güzel. Web sitesindeki kod oluşturma örneklerini atlayın. Bunların sadece Rails fanboylarını yatıştırmak için orada olduğunu hayal ediyorum. :) Temel JQueryMX nesne modeliyle başlayın ve bir denetleyici oluşturun.
Chris Jaynes

1
Bu yorumu yaptığımdan beri Require ve Spine kullanmaya geçtim. Sonuçta, JMVC'den daha küçük, daha zarif ve daha az 'Girişim'. JMVC, Java geliştiricileri ekibimizin JS'ye ayarlama yapması için güzeldi, ancak JS'yi daha iyi anlamaya başladığınızda dayanmıyor ...
Chris Jaynes

JMVC'nin MVC kısmı şimdi can.js
PHearst

21

Omurga , Omurgaya benzer bir API'ye sahiptir, ancak çok daha küçüktür. Prototip palet mirasına sahiptir.


2
Ayrıca CoffeeScript'te yazılmıştır ve CoffeeScript'in sınıf stilini kullanır - bu büyük bir kazanç değil, ama çok hoş.
ücretli bir inek

1
Bu yüzden omurgadan daha küçük olduğunu sanıyorum? Kahve kodu daha kompakt ...
Brenden

Omurga seviyorum. Saf şaşkınlık için RequireJS ile birlikte kullanın. CoffeeScript'in sizi korkutmasına izin vermeyin, normal JS ile de iyi çalışır ...
Chris Jaynes

Tarayıcı desteği IE> = 9 olduğundan ziyaretçilerinizin profiliyle eşleşip eşleşmediğini kontrol edin.
Richard

20

AngularJS, jQuery ile birlikte iyi çalışır ve MVC yapısı ve endişelerin sıkı bir şekilde ayrılması ile size çok yardımcı olacaktır.

Tam test ortamı ve Bağımlılık Enjeksiyonu dahil ...

Http://angularjs.org adresinden kontrol edin


Angularjs 2013 sonlarında bugüne kadarki en iyisidir .... Bence ....
Tony Bao

15
açısal bir mikro çerçeve değildir: /
iConnor

1
Katılıyorum, Açısal bir mikro çerçeve değildir.
Vojta

2
evet, ayrıca öğrenme eğrisi orantısızdır, diğer çerçevelere kıyasla faydaları vardır.
vsync

4
açısal bir mikro çerçevenin tam tersidir. bu bir canavar.
hasen


14

Bence bu, kontrol etmeniz gereken bir şeye benziyor: http://knockoutjs.com/

(Silverlight / wpf programcısı olarak bu, nihayet javascript öğrenmeye başlamamı sağlayan kütüphaneydi. Benim için iyi bir seçenek gibi görünüyor!)


Silverlight / wpf programcısı olarak nakavt, omurga ve diğer birkaçını değerlendirdim. Günün sonunda Angular'a geçtim. Bağlamaları ve çok daha fazlası var.
jonperl


8

ember.js

Bunlar Ember'i kullanmak için bir zevk haline getiren üç özelliktir:

  1. Bağlar
  2. Hesaplanan özellikler
  3. Otomatik güncelleme şablonları

Bağlar

İki farklı nesne arasındaki özellikleri senkronize tutmak için bağları kullanın. Yalnızca bir kez bağlayıcı olduğunu bildirirsiniz ve Ember, değişikliklerin her iki yönde de yayılmasını sağlar.

İki nesne arasında nasıl bağlayıcı oluşturacağınız aşağıda açıklanmıştır:

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"

Bağlamalar, uygulamanızı MVC (Model-View-Controller) desenini kullanarak yapılandırmanıza izin verir, ardından verilerin her zaman katmandan katmana doğru akacağını bilerek rahatlayın.

Hesaplanan Özellikler

Hesaplanan özellikler, özellik gibi bir işlevi ele almanızı sağlar. Hesaplanan özellikler kullanışlıdır, çünkü diğer mülklerde olduğu gibi ciltlemelerle de çalışabilirler.

Şablonları Otomatik Güncelleme

Ember, anlamsal bir şablonlama kütüphanesi olan Gidon kullanır. JavaScript uygulamanızdan veri alıp DOM'a koymak için, bir etiket oluşturun ve değerin görünmesini istediğiniz yere HTML'nize yerleştirin:

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

2
omurga üzerinde herhangi bir şekilde kullanmak için avantajlı olduğunu .... özellikleri ilk aşamalarında çok açık değilse ..
Bijendra

4
Ben emberJS gibi, ama bu "mikro" değil BÜYÜK çünkü onun düz bir çerçeve
iConnor

1
Ember ve mikroçerçevenin aynı cümlede kullanılmasına izin verilmemelidir.
Önek

8

Stapes.js

Tam açıklama: bu kütüphanenin yazarıyım :)

Gerçekten küçük bir şey arıyorsanız (1.5kb minimize / gzipped) bir göz atın ve beğenip beğenmediğinizi söyleyin.


İlk bakışta harika görünüyor! Prototip paleti mirasınıza odaklanmanızı seviyorum (simüle edilmiş sınıflar ve kafa karıştırıcı newoperatör yok ). Gereksiz görünen bir başkası eachve map. Zaten Underscore.js ve jQuery'de var .
feklee


4

Muhtemelen ihtiyacınız olan şey için aşırı doldurulur , ancak SproutCore bir MVC çerçevesidir ve JavaScriptMVC veya TrimPath's Junction'dan daha ağır görünmemektedir .

Ne yazık ki, bunların hiçbiri aşamalı geliştirme ilkesi üzerine inşa edilmiş gibi görünmemektedir .


1
JavaScriptMVC'nin temel MVC bileşenleri, Backbone'un gzip'lerinden yaklaşık 1k daha büyüktür (ancak daha fazla özelliğe sahiptir). Ve JMVC, aşamalı olarak geliştirilmiş uygulamalar oluşturabilir. Sadece Model katmanını fırlatırsınız.
Justin Meyer

3

Popüler ActionScript MVC çerçevesi PureMVC kısa süre önce JavaScript'e taşındı. Henüz denemek için bir şansım olmadı, ama iyi olduğuna eminim.


Esneklik için seviyorum. Basit ve güçlü.
Glenn

3

Lütfen jquery-claypool'u da kontrol edin .

jquery-claypool, django, raylar, yay vb. ile olan tecrübelerime dayanarak jquery üzerine inşa edilmiş küçük, hızlı, toplanabilir bir mvc çerçevedir. Çok hafiftir ve hem istemci hem de sunucu ortamlarında çalışır.

temiz mvc, kategori günlüğü, filtreler (aop), kontrolörlerin tembel yaratılması, kontrolün ters çevrilmesi, konfigürasyon üzerinde konvansiyon ve daha fazla tasarım için bir yönlendirme çerçevesi sağlar.

jquery'nin zaten yaptığı hiçbir şeyi yapmaz, jquery gibi hisseder ve iyi bir çerçeve gibi çalışır: basitçe.

jquery-claypool

Umarım kontrol edersin.


Claypool'u Omurga ile ilgili olarak nasıl görüyorsunuz?
Pepijn





2

GÜNCELLEME 2016: Sammy.js terk edilmiş gibi görünüyor.

Sammy.js'ye bir göz atın

Siteden metin:

Sınıf ile küçük bir web çerçeve.

  • KÜÇÜK Sammy'nin çekirdeği sadece 16K sıkıştırılmış ve 5.2K sıkıştırılmış ve sıkıştırılmış
  • MODÜLER Sammy bir eklenti ve adaptör sistemi üzerine kurulmuştur. Yalnızca ihtiyacınız olan kodu ekleyin. Kendi kodunuzu yeniden kullanılabilir eklentilere çıkarmak da kolaydır.
  • TEMİZ Tüm API, anlaşılması ve okunması kolay olacak şekilde tasarlanmıştır. Sammy iyi bir kapsülleme ve uygulama tasarımını teşvik etmeye çalışır.
  • EĞLENCE Eğer eğlenceli değilse kalkınmanın gerçek noktası nedir. Sammy MATZ yaklaşımını takip etmeye çalışır. Geliştirici mutluluğu için optimize edilmiştir.

MATZ nedir?
kstep

Ruby'nin yaratıcısı Yukihiro “Matz” Matsumoto, yaşamı yansıtacak şekilde “Ruby'yi doğal değil basit hale getirmeye çalıştığını” söyledi. Bu yüzden yazılım kullanıcı için doğal hissetmelidir. Bu MATZ yaklaşımı ile kastedilmektedir.
Bijan


1

CorMVC, anlaşılması ve başlaması kolay, jquery tabanlı ve herhangi bir sunucu teknolojisine bağlı değildir


1

MCV adında çok basit bir Javascript MVC çerçevesi geliştirdim . İstediğinizi tam olarak yapmaz, ancak yardımcılarla kolayca genişletilebilir. Her neyse, kesinlikle mikro (1,9kb paketlenmiş).

Jamal gibi az çok çalışıyor, ancak iki nedenden ötürü kendim almaya karar verdim:

  • jQuery bağımlılığını kaldırın (her ne kadar jQuery ile birlikte kullansam da)
  • yardımcılarla genişletilebilir hale getirir. Bunlar CakePHP davranışları, bileşenleri ve yardımcıları için analogdur.


1

AngularJS'yi iptal ettim (tam açıklama, açısal geliştirme çabasıyla sınırlı bir şekilde ilgileniyorum) ve bu konuda çok heyecanlıyım. Dahili bir proje için bir özellik alarak yan yana karşılaştırma yaptım (üzgünüm bunu paylaşmak için imza yok) ve hem AngularJS hem de Omurgada uygulayarak. Harika bir egzersizdi ve sonunda Angular'a yöneliyorum. Çekirdek geliştiriciler soruları cevaplamak konusunda harikalar ve yerleşik veri bağlama, birim / e2e testi ve dokümantasyonu ile gerçekten güzel bir iş çıkardılar. 1.0 hala yakın gelecekte çıkacak hala beta. Beta çok kararlıdır.

Biraz paradigma değişimi var ve çoğundan oldukça farklı bir yaklaşım kullanıyorlar. En sevdiğiniz jquery eklentilerini entegre etmek biraz çaba gerektirir, ancak yapılabilir ve yapılmıştır (github'a açısal katkı).

Söyleyeceğim (ve bu çoğu js merkezli çerçeveler için bir sorun), içeriğinizi nasıl SEO dostu hale getireceğinizi araştırdığınızdan emin olun (sizin için önemliyse). Haziran ayında açısal topluluğa katıldığımdan beri, ilginin arttığını ve bazı insanların Backbone ve diğerlerine baktıklarını ancak Angular'da gördüklerini gerçekten sevdiklerini söyleyen yayınlar yaptığını fark ettim.








0

Can.js ihtiyacınız olan her şeye sahiptir ve sadece 8 KB ağırlığındadır. JavaScriptMVC'den en iyi bitleri alır ve gözlemciler, widget'lar, bağlama, eserler ile küçük ama kickass çerçevesine damıttı. Büyük çerçevelerle ( jQuery , Dojo Toolkit , MooTools vb.) Uyumludur . Dokümantasyon mükemmel ve yazarlar duyarlı. Kesinlikle bir göz atmaya değer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.