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.