Açılış cümleniz aslında Backbone.js ve jQuery arasındaki farkların çok iyi bir ifadesiydi, bu yüzden biraz açalım.
Birincisi, iki kütüphane hiç rekabet içinde değil - ücretsiz.
Örnek olarak, işte jQuery ile yapacağım bazı şeyler:
- Animasyonlu slayt gösterileri
- İOS tarzı numara "döndürücü" gibi form denetimi geliştirmeleri
- Bir sınıf adına göre öğelerin görünürlüğünü değiştirme
Ve Backbone.js'de yapabileceğim bazı şeyler:
- Kullanıcının bir küçük resme tıkladığı ve kullanılan kamera, konum ve fotoğrafçının adı gibi bazı verilerle birlikte fotoğrafın daha büyük bir sürümünü görüntüleyebileceği bir fotoğraf albümü oluşturun
- Bir veri ızgarası sunan ve kullanıcının tek tek öğelere tıklayıp bunları bir formda güncellemesine olanak tanıyan bir ana / ayrıntı türü sayfa oluşturun.
jQuery mikro düzeyde mükemmeldir - sayfa öğelerini seçerek, tarayıcıların olayları işleme biçimindeki farklılıkları yumuşatır.
Backbone.js daha büyük resimdir. Verileri ve uygulama mantığını yönetmenize yardımcı olur. Yukarıdaki fotoğraf albümü örneğinde, Backbone birkaç yararlı yapı sunar: fotoğraflarla ilgili tüm verileri (bir model), albümdeki tüm fotoğrafların bir listesini (bir koleksiyon) ve koyacak bir yere sahip olacaksınız. Kullanıcı bir küçük resme (görünüm) tıkladığında ne olacağını belirleyen mantık. Omurga kontrolü veya uygulamasındaki ana parçalardır.
Backbone.js, uygulamanızın verilerinin ve mantığının sonuçlarını DOM'a dönüştürmeye yardımcı olmak için jQuery'den veya buna benzer bir şeyden yararlanır. Örneğin, Omurga uygulamanız için konteyner görevi görecek sayfadaki öğeyi seçmek için jQuery'yi kullanmak yaygındır. $(function () {});
Omurga kontrolünüzün parçalarını çalıştırmak için jQuery'leri kullanmak da yaygındır . Muhtemelen form alanı doğrulama hata mesajlarını jQuery ile de görüntülersiniz.
JQuery'de kesinlikle büyük, karmaşık kullanıcı arayüzleri oluşturabilirsiniz. İşte sürdürdüğüm uygulamada birkaç tane var. Ancak bunlarla çalışmak zordur çünkü jQuery bir uygulamaya yapı sağlamak için tasarlanmamıştır. Özellikle, öğe gruplarının seçilmesi ve ardından bu öğeleri işleyen geri arama işlevlerinin iletilmesine dayanan jQuery API'si, büyük, karmaşık bir denetim veya uygulamada kullanmak için iyi bir model değildir. Sonunda çok sayıda iç içe geçmiş işlev elde edersiniz ve neler olduğunu görmek çok zordur.
Şu anda Backbone.js'de bu kontrollerden birini yeniden çalışıyorum. Son bir örnek olarak, her iki farklı kütüphanede aynı kontrol üzerinde çalışırken düşünce sürecimin nasıl farklılaştığının hızlı bir özetini burada bulabilirsiniz.
JQuery'de şunlar hakkında endişeliyim:
li
İstediğim öğe grubunu almak için doğru seçiciyi kullanıyor muyum?
- Bu Ajax çağrısı tamamlandığında bu değerler listesini yeniden doldurmam gerekir mi?
- Bu dizi değerlerini
input
sayfadaki öğelere nasıl geri koyabilirim ?
Backbone'da daha çok şunlara odaklanıyorum:
- Bu özellik kümesini model öğemde doğrulamak için doğru mantık nedir?
- Kullanıcı Ekle düğmesini tıkladığında, koleksiyona hemen yeni bir öğe eklemeli miyim, yoksa tüm verileri doldurup "geçerli" olana kadar mı beklemeliyim?
- Koleksiyonumdaki bir öğe, silindikten hemen önce veya sonra öğe silindiğinde nasıl yanıt vermelidir?
jQuery nitty-cesur ayrıntıları ele alır ve Backbone daha üst düzeydir.
Kapanırken, Backbone.js örneklerini tartışırken "kontrol" ve "uygulama" kelimelerini kullandığımı fark edin. Backbone.js'nin yalnızca tek sayfalı uygulamalar için olduğu doğru değil. Yine de, Backbone.js'nin verileri işleyen ve birçok mantığı işleyen karmaşık uygulamalar oluşturmak için iyi olduğu doğrudur. Küçük ölçekli kullanıcı arayüzü öğeleri için kullanmak aptalca olurdu - empoze ettiği ekstra yapıya gerek yok.
Güncelleme: Birden çok sayfa konusunda, evet, Backbone verilerinizin kalıcı olması için güçlü bir mekanizma sağlar. Her modelin, save
değişiklikleri sunucuda depolamak için bir AJAX çağrısı yürütecek bir yöntemi vardır. Yani, verilerinizi kaydettiğiniz sürece çok sayfalı bir uygulamaya sahip olabilirsiniz. Bu çok esnek bir model ve muhtemelen işte Backbone'u nasıl kullanacağız. Tek sayfalık bir uygulama oluşturmayı çok isterdim, ancak mevcut çok sayfalı uygulamamızda 10 yıllık çalışmamız var. Daha yoğun UI bileşenlerimizden bazılarını Backbone'da yeniden oluşturmayı, ardından kullanıcı farklı bir sayfaya geçmeden önce değişiklikleri sunucuyla senkronize etmeyi arıyoruz.