Nerede web geliştirme MVC deseni ağır jQuery kodu yerleştirmek için?

3 Cevap php

Ben sayfaları birçok web sunucusu ile herhangi bir iletişimi olmadan çok interaktif bir web sitesi inşa ediyorum. Temel olarak, bir sayfa kullanıcıların divs bunları taşıma ve diğer eylemleri gerçekleştirmek için çeşitli tıklayabilirsiniz DHTML arayüzü bir tür temsil eder. Sonunda, kullanıcı ekrandaki tüm divs "devlet" kurtarmak için ve sadece o HTTP isteği sunucuya gönderilir yapabiliyor.

Ben (CodeIgniter üzerinden) MVC yaklaşımını kullanmaya çalışıyorum ve bu eylemlerin çoğunlukla JQuery ve yazdığım JavaScript işlevleri birkaç özel tarafından işlenir. Ben mantık kapsar JavaScript kodu bir sürü var. Şu anda, tüm kod View CodeIgniter'ın MVC içinde, ama her nasılsa bu yanlış olduğunu hissediyorum. Ben kontrolörün bazı tür bazı kod taşımak gerektiğini düşünüyorum, ama bir JavaScript bir yerine PHP kontrolör CI tarafından sağlanmaktadır.

Ben JavaScript paralel bir MVC çeşit oluşturmak gerekir?

3 Cevap

Yapabildin. Asset Helper içine bak. Bu size tüm CodeIgniter'ın yapısına müdahale olmadan, istediğiniz yapısının ne tür kurmanızı sağlar. Bu varlık alanının bir tür kurar ve istediğiniz ancak kendi modülleri ayarlayabilirsiniz. Javascript muhtemelen bir AJAX kullanarak değil, özellikle eğer, Manzaralı başta başa gidiyor gibi olsa da, onlar için ayrılık farklı bir tür düşünebilirsiniz. Yani, mantıksal gruplandırma ayrı klasörler halinde javascript (a la Java) ambalaj düşünün. Ardından, varlık yardımcı kullanarak, istediğiniz ne olursa olsun kullanmak için programı anlatmak için PHP basit bir çizgi bulunuyor.

Yani, her istemci üzerinde çalışır, çünkü teknik olarak mümkün - bir kenara bırakırsak, JavaScript iş mantığı kodunu uygulama için dışarı bakmak zorunda başka bir şey uygulamanın güven sınırları dışında çalışır koşuyoruz kodu olduğunu Bir müşteriniz size kötü bir veri göndermek için. Yani ön sonunda yetkilendirme mantığı var, özellikle büyük bir sorun olabilir.

Kod ne olduğunu bilmeden, ben tamamen JS dışında güven yüksek düzeyde gerektirir kodunu almak istiyorum diyecekler. UI şeker JS kaydedin. Sürece sadece istemci tarafı sunum manipüle ile ilgilidir - Bunu yaparsanız, bu sizin "görünümünde" JS kod olması çok tamamen kabul edilebilir.

Ama evet, diğer taraftan, ben bir model-view-controller (Client) kontrolörü (Server) desen olarak bu çabayı görmek nasıl görüyorsunuz. Ama o Tamam düşünüyorum ...

JavaScriptMVC organize ve geniş çaplı JS uygulaması geliştirmek için mükemmel bir seçimdir.

Mimari tasarımı çok pragmatik olduğunu. Hiç JavaScript ile yapacak 4 şey vardır:

  1. Bir olaya yanıt
  2. İstek Veri / işleyin Hizmetleri (Ajax)
  3. Ajax yanıt alan özel bilgi eklemek.
  4. DOM güncelleyin

JMVC Model, View, Controller desen içine bu böler.

İlk ve belki de en önemli avantajı, Kontrolör olduğunu. Kontrolörler olay heyet kullanın, böylece yerine olayları atfeden, sadece sayfa için kurallar oluşturmak. Onlar da denetleyici çalışır ne kapsamını sınırlamak için Controller adını kullanın. Bu, bir olay, bir todos denetleyici olmak zorunda biliyorum '# todos' eleman meydana görürseniz, yani sizin kod deterministik yapar.

$.Controller.extend('TodosController',{
   'click' : function(el, ev){ ... },
   '.delete mouseover': function(el, ev){ ...}
   '.drag draginit' : function(el, ev, drag){ ...}
})

Sonraki modeli geliyor. JMVC hızlı (# 2) Ajax işlevselliği düzenlemek ve alan özgü işlevlerle (# 3) ile veri sarın sağlayan güçlü bir sınıf ve temel modeli sağlar. Tamamlandığında, size gibi denetleyicisi modellerini kullanabilirsiniz:

Todo.findAll ({sonra: new Date ()}, myCallbackFunction);

Lütfen todos geri gelip bir kez Son olarak, (# 4) bunları sergilemek zorundayız. Eğer JMVC görüşünü kullanmak yerdir.

'.show click' : function(el, ev){ 
   Todo.findAll({after: new Date()}, this.callback('list'));
},
list : function(todos){
   $('#todos').html( this.view(todos));
}

'Izleme / todos / list.ejs' In

<% for(var i =0; i < this.length; i++){ %>
   <label><%= this[i].description %></label>
<%}%>

JMVC mimarisinin çok daha fazlasını sağlar. Bu ile geliştirme döngüsünün hiç kısmında size yardımcı olur:

  • Kod jeneratörler
  • Entegre Tarayıcı, Selenyum, ve Rhino Test
  • Belgeleme
  • Komut sıkıştırma
  • Hata raporlama