AJAX ve MVC deseni

4 Cevap php

Benim sorunum oldukça yaygın olduğundan emin değilim ama benzer bir soru, ben bir şey bulmak mümkün değil .. varsa beni yönlendirme Lütfen ...

Ben bireysel Ajax istekleri ile yüklü olabilir 5-6 divs bir sayfa var. Istemci DIV'leri en innerHTMLs yeniler önce bir prototip ajax.request aracılığıyla (), sunucu (php) bölümü için HTML kodunu geri yankıları.

İşte benim sorum: What's the best practice for preserving the MVC pattern on the server side concerning the HTML code it throws out?

Şimdi, benim modeller daha sonra yankıları HTML kodunu içeren bir really long VAR başlatmak için onu sağlayan denetleyici veritabanı veri döndürebilir. Benim sorunum benim denetleyicisi sınıflarında HTML kodu bir sürü ile sonuna kadar olduğunu ...

4 Cevap

Eğer gerçekten MVC kullanmak ister misiniz? C çoğunlukla Kongreler / sığınakta URL'ler tarafından kaldırılabilir.

Dedi Andy gibi, istemci tarafında veri aktarmak için JSON kullanmalısınız. (Diğer uygulamalar servisleri kullanmak için varsa çok daha iyi davranır çünkü) XML de geniş olarak kullanılan alternatif olduğunu. XML JSON kolayca tranformed olabilir! Ve JSON kodu geçerli JavaScript Object kodudur. Yani onunla birlikte istemci tarafında şablonları Stich için kullanabilirsiniz.

Tarayıcı / istemci tarafı çiftleşmiş için EJS denemelisiniz! Bunu yaparsanız, size denetleyicileri hiçbir HTML klişe var! Sadece iş mantığı. Bu SOA en iyi uygulamaların bir sürü izler. Mimari desen SOFEA ya da (aynı) Ruhunun denir.

Onunla Anasayfam yazdım. Bir çok şablon motorlarının değerlendirilmesi EJS iyi aday olduğunu clerified etti.

Because: 1. It's fast! 2. It's free (MIT License)! 3. It works well with JQuery 4. It does realy modify the DOM, so other methods can access the used templates (JS Repeater doesn't).

Diğer çerçeveler:

  1. JSmarty: kullanmak için ama Smarty şablonları kullanabilirsiniz değil gibi kolay. Bu ağır geliştirme aşamasındadır prooven ve hala enteprise değildir.

  2. Trimpath Javascript Templates: Ayrıca hala geliştirilme aşamasındadır ... JQuery / Prototype ile iyi çalışmaz.

  3. jQSmarty: Güzel, ama bu gelişme durmuş gibi görünüyor. Son değişiklik 2008 yılında oldu.

  4. seethrough_js: İnvaziv şablon layouting. Erlang insanlar için güzel.

  5. JsonML: Ayrıca json dayalı bir invaziv şablonu biçimi. Bu konuda ne düşünüyorsunuz? Ben tasarımcıları kendi HTML / CSS elemanları kalmak gerektiğini düşünüyorum, bu yüzden hiçbir bilgisi israf edilmektedir.

  6. JS Repeater: kendi kötü denemeden de hatırlatıyor. Ben bunu kontrol kullandım .. ama çok iyi bir çok şey işlemez ettik. (Böyle es boş alanları vb)

  7. Pure: sayfaları geliştirmek için nasıl bir relegios savaş başlatmak için Zaman? Ben Saf cevabı olmadığını düşünüyorum. Yapmanız gerçekten ne tanımlamak eğer şişkinlik oluyor ve JSF gibi büyütmek için başarısız olur. Bu, hiçbir invaziv sözdizimi vardır çok iyi bu. Ama sorunları rendering için kuralları kullanmak için sert fiyat benim için bir hayır gitmek vardır. Bu sadece doğru değil hissediyor. Ben tamamen farklı düşünüyorum, diğer insanlarla tanıştım! Bunu test ve bana ne düşündüğünüzü bildirin.

Bu MVC + AJAX için ne olduğunu ...

Gerçekten basit uygulama, bana sormak olsaydı.

http://jarrettatwork.blogspot.com/2009/02/aspnet-mvc-ajax-brief-introduction.html

MVC en önemli mektubu AJAX ile çalışmak için V olduğunu düşünüyorsanız. Teori ile o View için yer yani HTML ile AJAX ve JS sunum katmanı parçasıdır - parçasıdır.

View son kullanıcıya göndermek ne sorumludur, ve MVC pıtır ayrı Model View ve Denetleyici bize sağlanan aynı veri modeli için birden görüşlerini etkinleştirmek için değil sadece ama orada olduğunu.

Bu yüzden bir sınıfta kod saklanması ve farklı görünümleri işlemek için aynı denetleyici kodu kullanmak en iyisidir. Statik bir sayfa çizimi, ancak diğer senaryoda bu sürece her katman vardır sorumlulukları saygı gibi, JSON veya farketmez diğer standart biçiminde olabilir özellikle AJAX çağrıları ve veri için tasarlanmış bir görünümüdür olabilir birinci durumda .

HTML dize hazır çoğunlukla ise bunu anlamak gibi, muhtemelen etiketleri tamamen ve kontrolör tarafından belirlenen değişkenler referans küçük inline PHP parçacıkları ile veritabanından dinamik içeriği yerleştirin.

Bu, etkili bir şekilde bir şablon mekanizmadır. PHP onun kalbinde bir motor şablonu da olduğunu unutmayın.

Örnek:

<?php
include 'controller.php'; // set variables used below
?>
<div>
   <h1>Hi there, <?=$UserName?></h1>
   <p>Since you've been here, <?=$numberOfDays?> days have gone by</p>
</div>

vb Bu da size HTML vurgulayarak sözdizimi geri verir ve sık sık kod okunabilirliği messes PHP kodu içindeki tüm uzun dize değişmezleri CONCAT zorunda kurtulur.