2013-01-22 15 views
6

Tüm uygulamalarımız php mvc ve istemci tarafında çok basit bir js davranışsal katman vardır. Javascript'i daha fazla yapılandırmak ve "snippet'leri" basit davranışı (her yerde farklı jQuery eklentileri yüklemek gibi) çalıştırmak için istemekten vazgeçmek istiyoruz. Javascript MVC çerçevelerini kullanmıyoruz ve yeni uygulamalarımız için en uygun çözümü buluyoruz."Hijax" pushstate için Javascript framework

En cazip çözümlerden biri, Twitter does gibi bizim için sunucu tarafını tutmaktır. Buna "Hijax + sunucu tarafı oluşturma" diyorlar. Sözleşme ile

, bizim bileşenleri tek DOM düğümü yapışırlar heyet, yangın aracılığıyla olaylar dinlemek: Biz blogdan alıntıların bizim için çok çekici javascript ama tam gaz mvc çerçeveye sahip yapmamayı tercih DOM'deki etkinlikler ve bu olaylar DOM olay kabarcıklandırması yoluyla diğer bileşenlere yayınlanır. [...] İkincisi, tüm bileşenlerimiz AMD kullanılarak tanımlanmıştır.

Kendi başımıza bir şeyler inşa etmeye çalışıyoruz, ancak üst düzey javascript uzmanlığı olmadan bu konuya daha fazla ulaşamıyoruz. jquery-pjax gibi bir şey de çok basit durumlar için iyi bir çözüm gibi görünüyor. Biz arıyoruz

:

  1. A UI/veri ayrımı DOM
  2. Olay güdümlü UI ile loosly çift XHR, Devs DOM her türlü dinleyicileri ekleyebilmeniz için
nesneleri için

Bunun için javascript çerçevesi gibi bir şey var mı? pushState ile daha fazla dikkat çekmek, umarım bir şey elde edilebilir. Herhangi bir fikir?

+1

IMO Twitter'ın yaklaşımı oldukça perişan. Haziran ayında bir [demo js imi] yazdım (http://dist.meekostuff.net/meeko-twitter/) ve [makale] (http://www.meekostuff.net/blog/Twitter-without-Hashbangs/) mobile.twitter.com'u aşamalı olarak geliştirerek nasıl "pushState" e taşınabileceklerini gösterme. [HTMLDecor] (http://github.com/meekostuff/HTMLDecor/) js çerçevemi kullandım ve demo sadece birkaç gün sürdü. Twitter taşınmak için kaç ay geçti? –

+0

İlginç yorum Sean :-) Ancak, performans kazanımı nedeniyle js hijax'e geçiş yapmıyoruz, bazen html'nin işi yapamayacağı ve sunucu tarafındaki uygulamalarımızı en aza indirgemek için davranışsal betimlemeye ihtiyacımız var. Bu yüzden biz de hijax'ın bizim için gerçekten uygun olacağını düşündük. Javascript devre dışı bırakıldığında, "eski" tam sayfa oluşturulmuş uygulamasının bir yedeğini almanız gerekir. Ve tamamen "hashbangs öldü" ile katılıyorum: onlar esnek olmayan ve ilerici geliştirme bir hayır-go –

+0

olur Bu yeni twitter.com ile başka bir sorun - js devre dışı bırakılırsa tweet yapmanın bir yolu yoktur. Bir düşünce sonrası olarak ilerleyici geliştirme. –

cevap

2

Sen benim geldiğince en iyi şekilde sorunuza cevap denemek için gidiyorum

0

History.js ve Amplifyjs (bazı bileşenler için ve muhtemelen microjs araya koymak için) ödeme isteyebilir. Bununla birlikte, sorunuzun çok geniş ve oldukça belirsiz olduğunu söyleyeceğim. Tam olarak bir JavaScript kitaplığında aradığınız şeyi başarıyla iletmediniz. Tümüyle karmaşık olan ve her birinin istemci tarafında geliştirmede belirli bir amaca hizmet etmek için var olan birçok farklı konudan bahsetmiştiniz. Bu kavramların hepsinin vahşi ortamda uygulanması olsa da, tüm problemlerinizi çözmek için net bir cevap yoktur.

İlk "UI/data segregation" noktanız ile başlayacağım. Bu kavram gerçekten endişelerin ayrılmasıyla ilgilidir. UI'nizin verilerinizden ayrı olarak var olmasını istersiniz. Gerçekten aradığınız şey, HTML'nizin veri modelinizin mevcut durumunu yansıtmasıdır. Bunun sizin için otomatik olarak gerçekleşmesini de istiyorsunuz. Bu MVC tasarım deseni ile çok yaygın bir iş akışı. esnek ve hafif doğa için ben backbone.js öneririm, bu farklı çerçeveler epeyce kullanmanın benim kişisel tecrübelerime

... Backbone.js, AngularJS, EmberJS ve liste uzayıp gidiyor: JavaScript sizin için kullanılabilir çeşitli seçenekler vardır . Omurgada 'un'un doğrudan bir veri modeline bağlanabildiği bir "Görünüm" kavramına sahibiz. Ayrıca Routes mekanizması ile istediğiniz "pushSate" kavramını destekler.

"Olay odaklı UI" bölümü, herhangi bir sayıda farklı JavaScript kitaplığı tarafından işlenebilir. jQuery, "her türlü dom elementine" olayları eklemek için muhtemelen en popüler kütüphanedir. Backbone.js ayrıca View temsilcisiyle etkinlik delegasyonunun (olay köpürme yoluyla) kolayca kurulmasını sağlar.

Kısacası, JavaScript'inize bir yapı eklemek istiyorsanız ... gerçekten tam olarak neye ihtiyacınız var. Sadece basit şeyler için, biraz el işi jQuery yapacak. Eğer gerçekten daha fazla MVC tarzı bir uygulama istiyorsanız, büyümesi için potansiyele sahipse, omurga gibi MVC çerçeveleri gitmek için yoldur.

İlgili konular