2015-11-30 25 views
5

Tek bir sayfa uygulamasına sahibim - yani sunucudaki her şey, HTML5 geçmişi api () kullanarak ağır kaldırma ve yönlendirme yapan tek bir index.html dosyasına yönlendirilir. en landing.html diyoruz ve başka hiçbir rotayı erişmek eğer onlar / eriştiklerinde ilk landing.html almak müşterilerine istiyor ve index.html let -Tek bir Sayfada Yönlendirme Farklı bir ana sayfa ile uygulama

Şimdi, yanına yeni bir açılış sayfasını eklemek istiyorum.

Artık IE9, HTML5 geçmişi API'sini desteklemiyor; bu nedenle, /books/authors gibi "sağlama URL'leri" yollarının kullanılması, /#!/books/authors haline gelir. Sunucuyla ilgili olarak URL is not sent to the server karma bölümünün tüm yolları / olduğundan, bu mantık temelinde landing.html veya index.html'a yönlendiremem anlamına gelir.

Bir hack düşündüm - yönlendirme URL'leri /landing.html için birlikte istemci üzerinde #! tespit sunucu (veya istemci) bir çerez ekleyerek notReallyHomePage ve sunucuda cookie temel doğru sayfaya yönlendirme denir . Bu gerçekten hacky ve iyi bir çözüm değil.

Bu durumda yönlendirme ile başa çıkmanın doğru yolu ne olurdu?

Benim arka uç ASP.NET MVC ama o acilis.html'de içeriği nedir sorusuna

+0

Neden ASP.NET MVC tarafından sağlanan yönlendirme özelliklerini kullanmak değil (eğer acilis.html gösterdiğinde belli ki o zaman index.html gizlemek). – Antony

+0

@Antony, çünkü bu tek sayfa uygulamalarının nasıl çalıştığı değil. Yönlendirme, istemci tarafında yapılır - bu nedenle, kullanıcı bir bağlantıyı tıkladığında sunucuya vurmanız gerekmez. Avantajı, çoğu yolun sunucudan JSON'a ihtiyaç duyması (ve işaretlememesinin) ve diğerlerinin ise sunucuya tamamen erişmeyi atlamasıdır. –

+2

Büyük olasılıkla, yönlendirme mantığınız olan bir dizin/kapsayıcı sayfası gibi bir şey isteyebilirsiniz. Bu sayfa seçilen rotaya bağlı olarak kısmi olarak yüklenir. Rotalarınız sunucuya gönderilmediğinden, doğru sayfayı hemen yüklemenin mümkün olduğunu düşünmüyorum. – Cerbrus

cevap

0

Hmmmmm ... alakalı olduğunu sanmıyorum? Adından da anlaşılacağı gibi oldukça basit bir sayfa.

İçeriğinin index.html dosyasının bir parçası olmadığından "ilk kullanıcı kullanıcısı" mantığına göre gizlenip gösterilemedi? Veya landing.html sizin pazarlama veya bir şey tarafından oluşturulan bazı garip sayfa ise, o zaman aynı mantığa göre gizler/gizler bir iframe yerleştirin.

+0

Hayır, açılış sayfasının sahip olduğu noktanın yarısı index.html dosyasını bütünüyle yüklemiyor. –

+0

Eh, bu durumda, çerez çözümünüz bunun için en iyi yol gibi görünüyor. Söylediğin gibi, ona 'landingPageVisited' ya da başka bir şey denir ve varsayılan olarak '/' inişe yönlendirilir.Çerez doğru olarak ayarlanmadıkça html. Ses gelmiyor * Bu * hack-y :) –

İlgili konular