JQuery, JavaScriptMVC, BackboneJS, SproutCore ve Knockout gibi çerçevelere nereye sığar?


14

JQuery'yi son 2 yıldır mutlu bir şekilde kullanıyorum ve onunla gerçekten harika bir işlevsellik oluşturmakta oldukça başarılı oldum ... bu yüzden çok rahatım. Ayrıca web'in geleceğinin mevcut istemci tarafı yolunda devam edeceğine inanıyorum.

Ancak...

Bir sonraki zorluk çeşitli denetleyici çerçeveleri şeklinde geliyor gibi görünüyor: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (liste uzayıp gidiyor).

Buna ek olarak, RequireJS veya LabJS vb.Gibi kullanım için bazı harika AMD Yükleyici araçları vardır . Ancak, jQuery şimdi ve pişmiş yeteneklere sahiptir .definethen

Hepsini takip etmek gittikçe zorlaşıyor ...

Ve şimdi, görevim bir MVC veya MVVM çerçeve istemci tarafı biçimini kullanmak için stratejik bir yönü değerlendirmek / karar vermek gibi görünüyor ... ama çok fazla sorum var.

  • JQuery yukarıda belirtilen çeşitli kontrolör çerçeveleriyle nereye uyuyor ?
  • JQuery her birinin yanındakullanılıyor veya bazılarının kendi ' JQuery- styled sürümü' var mı?
  • Yukarıda belirtilen çeşitli denetleyici çerçevelerinden birini uygularsanız RequireJS gibi araçlara hala ihtiyaç var mı?
  • Mu defineve thenyetenekleri pişmiş-içine JQuery şimdi supercede AMD Yükleyici yukarıda belirtilen?
  • Hangisi en modüler görünüyor? (aşağıdaki notlara bakın)

NOTLAR:
Gelecekte herhangi bir çerçevede istemediğim bir şey, kullanmadığım çok fazla işlevsellik almak zorunda kalmaktır. Yani, gerçekten modüler bir çerçeve kullanmayı tercih ederim. Örneğin, jQuery kullanıcı arabirimini kullanmak için aslında kullanamayacağınız diğer birçok çekirdek kütüphaneyi de almanız gerekir.

Her birini deneyeceğim, ancak bazı GERÇEK geribildirim harika olurdu. Bazı 'benzer' sorular gördüm, ancak hiçbiri yukarıdaki çarpıklığı gerçekten cevaplamadı.

Şimdiden teşekkürler!

Yanıtlar:


11

jQuery çapraz tarayıcı normalleştirme aracı. Size aşağıdakileri verir

  • DOM yardımcı programları
  • Etkinlik sistemi
  • ajax
  • Animasyonlar
  • ES5 yardımcı programları
  • başka bir şey

Omurga / nakavt / yada / yada modüler uygulamayı yapılandırmanıza ve yazmanıza yardımcı olacak MVC benzeri kütüphanelerdir. Bunlara sadece yapılarını istiyorsanız ihtiyacınız var.

RequireJS / yada / yada modül yükleyicilerdir. Modüler bir uygulama yazmak istiyorsanız bir çeşit modül yükleyiciye ihtiyacınız vardır.

JQuery yukarıda belirtilen çeşitli kontrolör çerçeveleriyle nereye uyuyor?

Belirtildiği gibi, jQuery tarayıcıları normalleştirir. denetleyici çerçeveleri yapmaz. JQuery gerekmez, ancak tarayıcıları normalleştirmek için bir yol gerekir.

JQuery her birinin yanında mı kullanılıyor veya bazılarının kendi 'JQuery tarzı versiyonu' var mı?

Omurga / nakavt / JavaScriptMVC'de tarayıcı normalleştirmesi yok, bu nedenle bunun için bir araca ihtiyacınız var. SproutCore hakkında pek bir şey yok gibi gözükmüyor.

Yukarıda belirtilen çeşitli denetleyici çerçevelerinden birini uygularsanız RequireJS gibi araçlara hala ihtiyaç var mı?

Bunlar sadece modüler uygulamalar yazmak için yazarsanız gereklidir. Çok evet.

Modüler uygulamaların üç çeşidi vardır

  • async, requirJS gibi yükleyiciler gerektirir
  • senkronizasyon modul8 gibi yükleyiciler gerektirir
  • ad alanlarını kullanma ve sadece dosyalar dahil
  • ender gibi paketler

JQuery'de kullanılan tanımlama ve ardından yetenekler şimdi yukarıda belirtilen AMD Yükleyicinin yerini alıyor mu?

Hayır. JQuery içine pişmiş tanımlama özelliği, jQuery'yi sarmadan bir AMD yükleyicisiyle kullanmanızı sağlar. Hala bir AMD yükleyicisine ihtiyacınız var. "O zaman" yeteneği, jQuery ertelemelerinin sadece bir şekeri.

Hangisi en modüler görünüyor? (aşağıdaki notlara bakın)

Bu tartışmalı bir soru. Benim kişisel görüşüm jQuery dahil tüm bu çerçevelerin şişirilmiş ve modüler değil olmasıdır.

Modüler, kendi kütüphanenizi yazın, kendi mimarinizi yazın.

Ancak daha az kötülük istiyorsanız omurga seçerim çünkü basit ve küçük veya benzer omurga


Teşekkürler Raynos ... Harika bir cevap için her zaman sana güvenebilirim!
Mahkum ZERO

@Marjan Herhangi bir girdi göndermeyi de düşünebilecek başkalarını bekliyorum
Mahkum ZERO

@PrisonerZERO: Bununla hiç sorun değil. Raynos'un cevabından memnun göründüğünüz gibi, yorumum bir yanıtı kabul etmeyi bilmemeniz durumundaydı (profilinizi kontrol etmedim ve temsilciniz burada oldukça yeni bir kullanıcı olduğunuzu gösteriyor)
Marjan Venema

2

Katkıda bulunduğum için JavaScriptMVC'ye cevap vereceğim:

JQuery yukarıda belirtilen çeşitli kontrolör çerçeveleriyle nereye uyuyor?

JavaScriptMVC jQuery'ye bağlıdır ve onu yoğun olarak kullanır.

JQuery her birinin yanında mı kullanılıyor veya bazılarının kendi 'JQuery tarzı versiyonu' var mı?

JavaScriptMVC'nin jQuery ile rakip bir işlevi yoktur. Bu, kendi olay sistemine sahip olan Omurga için geçerli değildir. Ancak, omurga veya omurga eklenen her şey çok azdır.

Yukarıda belirtilen çeşitli denetleyici çerçevelerinden birini uygularsanız RequireJS gibi araçlara hala ihtiyaç var mı?

JavaScriptMVC bir bağımlılık yönetim sistemi ile birlikte gelir -> çalmak. JavaScriptMVC'yi RequireJS ile kullanabilirsiniz, ancak çalma aslında çok daha güçlü ve yaklaşık bir kullanıcı tarafından indirilen boyuttadır.

Hangisi en modüler görünüyor? (aşağıdaki notlara bakın)

Bu görüşlü değil. JavaScriptMVC son derece modülerdir. Sadece ihtiyacınız olanı kullanırsınız. Omurga veya omurga ile karşılaştırıldığında, M, V veya C parçalarını tek başına kullanabilirsiniz. Birlikte monte edildiğinde, Omurgadan sadece 1k daha büyüktür (jQuery ve Underscore kullanırken). Çeşitli temel bileşen boyutlarını burada görebilirsiniz: https://github.com/jupiterjs/javascriptmvc/issues/26

Ancak JavaScriptMVC, Omurga veya Omurga'ya karşı çok daha güçlüdür (özellikler açısından). Örneğin, geçici olay işleyicileri neredeyse tüm bellek sızıntılarını önler. İşte pencere tıklandığında kendini gizleyen bir ipucu:

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

Kontrolleriniz modeldeki değişiklikleri dinlerken MVC yaklaşımı ile bu kesinlikle kritik öneme sahiptir:

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

  }
})

Denetleyici, bu harici olay işleyicilerin tümünü otomatik olarak açar.

Sadece MVC parçalarının diğer güçlü yönleri:

  • $ .Class çok güçlü bir sınıf sistemidir
  • $ .View ve $ .Model ertelemeleri destekler
  • $ .Kontrolör olay işleyicileri 'yeniden bağlayabilir'
  • Model. İlişkilendirmeleri, alıcı / ayarlayıcıları, varsayılanları, doğrulamaları destekler

Şimdi, JavaScriptMVC sadece MVC bölümlerinden (jQueryMX alt projesinin bir parçası olan) çok daha fazlasıdır. Şunlara sahiptir:

  • jQueryMX - jQuery'nin özel etkinlikler, dom yardımcıları vb. gibi eksik işlevleri.
  • Steal - bir bağımlılık yönetim sistemi. Ancak ajax uygulaması alıp google'ı taranabilir hale getirme gibi şeyler yapabilir.
  • FuncUnit - Çok güçlü bir test çerçevesi.

Şimdi, ne kullanacağına çok şey bağlı. Çok şey, bir "uygulama" veya "sayfa" yapmanıza bağlıdır. Bellek sızıntılarını önemsediğiniz test, bağımlılık yönetimi gerektiren bir uygulama, JMVC veya SproutCore'a bakarım.

Birkaç temel widget'ı birbirine yapıştırıyorsanız, omurga veya omurgaya bakardım.


"Omurga veya omurga, M, V veya C parçalarını tek başına kullanabilirsiniz." M, V ve C'nin her biri omurga ve omurga kadar büyüktür.
Raynos

Bu doğru değil. Omurga alt çizgisi bağımlılığı ile 5k. Omurganın ne olduğundan emin değilim. Ama işte döküm: Sınıf: 1k, Kontrolör: 1.74k, Model: 2.8k, $ .View: 1.6k, $ .String: .5k. Toplamda 8.6k. Bu 3k daha fazla, ama çok daha kullanışlı özellikler.
Justin Meyer

JavaScriptMVC'yi Kendo UI denetimleri gibi bir şeyle kullanır mısınız? Başka hangi kontroller?
Mahkum SIFIR

Evet, jQuery tabanlı herhangi bir UI kitaplığı harika çalışmalıdır (etkinlikler için jQuery'nin olay sistemini kullandığı sürece).
Justin Meyer

Omurga jQuery yerine Zepato kullanabilirsiniz, jQuery ile kombine JMVC MVC bağımlılık çok daha az hale dikkat etmeliyim. Ancak, jQuery olmadan biraz kaybedersiniz.
Justin Meyer
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.