Hash-Routing
Hash-Routing ist eine clientseitige Technik, die in Single-Page-Applications (SPAs) verwendet wird, um Navigationen und Zustandsänderungen zu verwalten, ohne die gesamte Seite neu zu laden.
Historischer Kontext
Frühe SPAs konnten den Pfad im URL nicht ändern, ohne die Seite neu zu laden. Zur Umgehung dieses Problems verwendeten Entwickler hash-basiertes SPA-Routing, welches die Route in dem "Fragment" speichert, dem Teil der URL, der dem Symbol #
folgt. Übliche Muster waren #/profile
und #!/profile
. Anwendungen überprüften kontinuierlich window.location.hash
(oder hörten auf das hashchange
-Ereignis, als es später unterstützt wurde), um Fragmentänderungen während der Benutzernavigation zu erkennen; die SPA aktualisierte dann die Ansicht, wann immer sich das Fragment änderte.
Einschränkungen
Obwohl dieser Ansatz keine Serversetup benötigte, hatte er Einschränkungen: Der back/forward-Support war begrenzt, Seiten mit hash-basierten URLs wurden nicht richtig indiziert (Suchmaschinen ignorierten das Fragment), und die resultierenden URLs wurden als unübersichtlich betrachtet.
Hash-basiertes Routing wird jetzt als eine veraltete Technik angesehen. Es wird, wenn überhaupt, nur als Fallback für sehr alte Browser oder für statische Hosts verwendet, bei denen serverseitiges Routing nicht konfiguriert werden kann.
Moderne Alternativen
Bis 2012 unterstützten alle großen Browser (Chrome 5, Safari 5, Firefox 4) die History API. SPAs konnten nun pushState()
, replaceState()
und das popstate
-Ereignis nutzen, um den Verlauf des Browsers zu manipulieren, direkt zu Pfaden wie /profile
zu wechseln und die Ansicht zu aktualisieren, ohne ein vollständiges Neuladen. Dies ermöglichten auch sauberere URLs ohne Hash-Fragmente.