雜湊路由

雜湊路由 (Hash routing) 是一種客戶端技術,用於單頁應用程式 (SPA) 中,在不重新載入整個頁面的情況下管理導航和狀態更改。

歷史背景

早期的 SPA 在不重新載入頁面的情況下無法更改 URL 的 路徑部分。為了解決這個問題,開發者使用了基於雜湊的 SPA 路由,它將路由儲存在 "片段" 中,即 URL 中 # 符號後面的部分。常見的模式包括 #/profile#!/profile。應用程式會持續檢查 window.location.hash(或者在稍後支援時監聽 hashchange 事件),以檢測使用者導航期間的片段更改;然後 SPA 在片段更改時更新檢視。

侷限性

雖然這種方法不需要伺服器設定,但它存在侷限性:後退/前進支援有限,帶有基於雜湊的 URL 的頁面無法被正確索引(搜尋引擎會忽略片段),並且生成的 URL 被認為不夠美觀。

基於雜湊的路由現在被認為是一種遺留技術。如果使用的話,也僅作為對非常舊的瀏覽器的回退方案,或者用於無法配置伺服器端路由的靜態主機。

現代替代方案

到 2012 年,所有主流瀏覽器(Chrome 5、Safari 5、Firefox 4)都支援 History API。SPA 現在可以呼叫 pushState()replaceState()popstate 事件來操作瀏覽器的歷史堆疊,直接切換到 /profile 等路徑,並在不完全重新載入的情況下更新檢視。這還允許使用更簡潔、不帶雜湊片段的 URL。