"Tek sayfalık web uygulaması" için mimari yönergeler


12

Bir "tek sayfalık" web uygulaması oluşturmak için bir yan proje başlatacağım. Uygulamanın gerçek zamanlı olması ve değişiklik olduğunda istemcilere güncellemeler göndermesi gerekir.

Bu tür uygulamalar için mimaride en iyi uygulama yaklaşımları için iyi kaynaklar var mı? Şimdiye kadar bulduğum en iyi kaynak, trello mimarisi makalesi: http://blog.fogcreek.com/the-trello-tech-stack/

Bana göre, bu mimari, çok seksi olmasına rağmen, özel gereksinimlerim için muhtemelen aşırı tasarlanmış - benzer gereksinimlerim olmasına rağmen. Sunucu tarafında bir alt / pub ile uğraşmak gerekip gerekmediğini merak ediyorum, bir şey olduğunda sadece sunucudan güncellemeleri itmek değil mi (örneğin istemci sunucuya bir güncelleme gönderdiğinde, db'ye güncellemeyi yazın, ve istemcilere bir güncelleme gönderin).

Teknik açıdan, muhtemelen mimarlık yönergeleri bir ölçüde temeldeki sunucu teknolojileri için geçerli olsa da, Node.JS veya belki Ruby'de bunu oluşturmak istiyorum.

Yanıtlar:


5

Kesinlikle Backbone.js gibi istemci tarafı MVC doğru bakmak istiyorum. Çok hafiftir, ancak uygulamanıza çok ihtiyaç duyulan bir yapı verecektir. Peepcode screencast'ı Omurga hakkında daha fazla bilgi edinmenin en hızlı yolu olarak tavsiye ederim.

İstemci tarafı MVC'nin bunun gibi güzel bir mimari yararı, sunucu tarafınızla veri alışverişine daha kolay hareket edebilmenizdir , örneğin REST üzerinden yapılandırılmış JSON.

Backbone.js bunu kutudan çıkardığında destekler - modellerinizi istemci ve sunucu arasında JSON olarak serileştirebilirsiniz, bu da bizi istek / yanıt açısından düşünmekten kurtarabilir.

Sunucu tarafında Node.js gibi bir şey, muhtemelen veri itmek ve çekmek için çok kısa süreli potansiyel olarak eşzamansız isteklere sahip olacağınız bu model altında caziptir.

Bir alternatif .... Comet gibi bir model web pub / sub elde etmek için basit bir yol olabilir ve bunu destekleyen bazı sunucu tarafı çerçeveleri vardır.


Şerefe, ben kesinlikle istemci tarafı için bir MV * FW kullanmayı düşünüyordum ve omurga hakkında öğreniyordum .. İyi ipuçları.
Matt Roberts

1

Muhtemelen ön uç için bir MV * javascript çerçevesi ile gider. Kendim tek sayfalık bir web uygulaması geliştiriyorum ve bir dizi çözümü araştırdıktan sonra, Backbone.js ile devam ettim. Bu çözüm, kutudan en iyi şekilde yararlanmadı, ancak başlamak için çekirdek bir temel sağladığını ve baktığım diğer çözümlerden çok daha esnek olduğunu gördüm (bu benim için önemliydi).

Diğer popüler çözümler, kutu işlevlerinden daha fazlasını sağlayan Ember.js ve Knockout.js'dir.


1

Bu beyinsiz bir IMO. AngularJS ön uç için harika çünkü. Pub / sub iyiliği ve minimum yaygara ile dinamik ve seksi bir arka uç için NodeJS / express / SocketIO. Ve bonus olarak, ön ve arka için bir dil kullanabilirsiniz!

Örnek için aynı https://github.com/hackify/hackify-server uygulamamı inceleyin

Bir uyarı, bazı millet sockjs adlı soket NodeJS alternatif tavsiye ediyoruz ama bunu kontrol edemedim, bu yüzden bunu tavsiye edemez


0

Baktığınız şey , istekleri işleyen basit bir sunucu uygulamasına sahip PHP veya Tomcat uygulama sunuculu Apache 2.2'dir . Marangozun çekiç ve çivi eşdeğeri. Karmaşık bir şey yok ama işi hallediyor. İşlevselliği genişletmeniz gerekiyorsa, Tomcat jsp ve jsf'yi istediğiniz zaman destekleyebildiğinden, bunu her zaman yapabilirsiniz.

Ön uçla ilgili olarak , jQuery UI ile birlikte sayfanıza işlevsellik eklemenin bir yolu olarak oldukça kullanışlı bir katlama olduğundan , jQuery ( $ .post , $ .load , $ .ajax ) kullanmaktan rahat olurum.


0

Gerçek zamanlı istemci güncellemeleri istiyorsanız, ya uzun engellemeli "AJAX" çağrılarını uygulamanız ya da tercihen modern web soketlerini kullanmanız gerekecektir. Bunlar, güncellemeleri bağlı bir istemciye iletmenize izin verir, bu da biraz javascript tarafından işlenir.

En son teknolojinin (veya en son moda) Google tarafından AngularJS olduğunu anlıyorum. Kısmen yazı SPA'larını kolaylaştırmak için tasarlanmıştır.


0

Reaktif olması gereken tek bir sayfa uygulaması oluşturmak için ortalama yığına (node.js, mongo ...) yakın bir şey istiyorsanız, meteor seçerim . Özellikle bir prototip üretiyorsanız ve sıfırdan başlıyorsanız.

Açısal bir ön uca sahip raylar iyi bir seçim imho olacaktır, ancak belirli taşlar yüklemeniz gerektiğinden "istemcilere güncellemeler gönderme" gibi daha zor bir zamanınız olacak, bazı uzun sorgulama veya sockjs kütüphanesini bir araya getirmelisiniz. .

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.