Ich verwende derzeit den Backbone-Router für mein SPA. Es funktioniert irgendwie OK, aber ich habe eine Reihe kleiner Probleme:
Das Problem ist - ich möchte entweder pushState
navigation oder none haben, was bedeutet, dass - app state ausgeführt wird (wenn ich die "initiale" URL an den Router weitergebe oder ich eine Route über triggere) JS), aber die Adressleiste ändert sich nicht. Ich möchte nicht die HashChange Rückfälle für IE9. Es funktioniert gut, wenn IE9 nicht die Zurück-Schaltfläche und die sich ändernde Adressleiste erhält, aber den Navigationsstatus innerhalb der Anwendung behält. Ich kann dann den Benutzern eine URL anzeigen, die sie als Lesezeichen speichern können, und der Server leitet diese Seite weiter, und der App-Status wird basierend auf der ursprünglichen URL gestartet. Die Adressleiste, die sich während der In-App-Navigation im IE nicht ändert, ist ein Kompromiss, den ich akzeptieren möchte.
Ein weiteres Problem, das ich habe, ist, dass ich navigate(url, {trigger: true})
für meine abgefangenen HREFs verwende und die Zurück-Schaltfläche nicht funktioniert (tut nichts). Aber ich muss den App-Status bei der Vorwärts- / Rückwärts-Navigation wirklich ändern, selbst wenn er für diese bestimmte URL neu erstellt wird - ich würde den Zustand lieber wiederherstellen.
Was sind meine Optionen in Bezug auf Router, die ich verwenden könnte? Wie ich schon sagte, ich möchte keine Hashbang-Fallbacks haben (das heißt - ich möchte nur eine Möglichkeit haben, URLs in der Anwendung darzustellen, Punkt).
Was soll ich verwenden? Director.js? Geschichte.js? Es scheint eine ganze Reihe von Router / History-Bibliotheken zu geben, aber welche ist die, die ich am meisten suche? ..
Angenommen, Sie haben Modernizr zum Scannen der HTML5-Verlaufsunterstützung, wenn ich das gut verstehe, wäre keine schnelle Lösung, in Ihrer Hauptlayout-js-Datei als Ereignis hinzuzufügen
%Vor%und fügen Sie die Funktion wie folgt zu diesem Layout hinzu:
%Vor%zu optimieren, können Sie natürlich nur binden, wenn Geschichte nicht unterstützt wird, vergessen Sie nicht, "modernizr" in Ihr Layout aufzunehmen. Hoffe, das ist eine interessante Antwort für Sie ..
Tags und Links backbone.js pushstate backbone-routing