2015-11-30 8 views
5

Ich habe eine einzelne Seite Anwendung - was bedeutet, dass alles auf dem Server auf eine einzige index.html Datei umgeleitet wird, die das schwere Heben und Routing mit dem HTML5-Verlauf api ().Routing in einer einzelnen Seite Anwendung mit einer anderen Homepage

Nun, ich möchte eine neue Zielseite zur Seite hinzufügen - lass es landing.html nennen und ich Kunden wollen zuerst landing.html zu erhalten, wenn sie / zugreifen und index.html, wenn sie eine andere Route zugreifen.

Jetzt IE9 unterstützt nicht die HTML5-Verlaufs-API, so dass "Hash URLs" Pfade wie /books/authors werden /#!/books/authors darin. Da der Hash-Abschnitt der URL is not sent to the server so weit wie der Server betrifft, sind alle Pfade /, was bedeutet, dass ich basierend auf dieser Logik nicht zu landing.html oder index.html routen kann.

Ich habe gedacht, ein Hack - Umleitung URLs mit / zu landing.html, #! auf dem Client-Erkennung auf dem Server ein Cookie Hinzufügen (oder Client) genannt notReallyHomePage und basierend auf der richtigen Seite Umleitung auf den Cookie auf dem Server . Das ist wirklich hacky und keine gute Lösung.

Was wäre der richtige Weg, um in diesem Fall mit dem Routing umzugehen?

Mein Backend ist in ASP.NET MVC, aber ich glaube nicht, dass auf die Frage relevant ist

+0

Warum nicht die Routing-Funktionen von ASP.NET MVC verwenden. – Antony

+0

@Antony, denn so funktionieren Anwendungen mit nur einer Seite nicht. Das Routing erfolgt auf der Client-Seite - Sie müssen also nicht auf den Server klicken, wenn der Benutzer auf einen Link klickt. Der Vorteil ist, dass die meisten Routen nur JSON vom Server (und nicht Markup) benötigen und andere den Server komplett überspringen können. –

+2

Wahrscheinlich möchten Sie etwas wie eine Index/Container-Seite, die Ihre Routing-Logik hat. Diese Seite wird je nach gewählter Route teilweise geladen. Da Ihre Routen nicht an den Server gesendet werden, ist es nicht möglich, sofort die richtige Seite zu laden. – Cerbrus

Antwort

0

Hmmmmm ... Was ist der Inhalt von zielseite.html ist? Von seinem Namen her vermute ich, dass es eine ziemlich einfache Seite ist.

Konnte der Inhalt nicht Teil von index.html sein und nach der "First-User-Logik" versteckt/angezeigt werden? Oder wenn es sich bei landing.html um eine seltsame Seite handelt, die von Ihrem Marketing erstellt wurde, dann platzieren Sie sie in einem iframe, der nach der gleichen Logik ausblendet.

(offensichtlich, wenn Sie landen.html dann verstecken Sie index.html)

+0

Nein, der halbe Punkt der Zielseite ist es, index.html nicht vollständig zu laden. –

+0

Nun, in diesem Fall scheint Ihre Cookie-Lösung der beste Weg zu sein. Wie du schon sagtest, nenne es 'landingPageVisited' oder so, und standardmäßig würde '/' zur Landung umleiten.html, es sei denn, der Cookie wurde auf "true" gesetzt. Klingt nicht * das * Hack-y :) –