Vue-router 中hash模式和history模式的區別

小藍矛發表於2020-10-04

最直觀的區別就是在url中 hash 帶了一個很醜的 # 而history是沒有#的
hash 模式下,僅 hash 符號之前的內容會被包含在請求中,如 http://www.abc.com,因此對於後端來說,即使沒有做到對路由的全覆蓋,也不會返回 404 錯誤。
history 模式下,前端的 URL 必須和實際向後端發起請求的 URL 一致,如 http://www.abc.com/book/id。如果後端缺少對 /book/id 的路由處理,將返回 404 錯誤。

Vue-Router 官網裡如此描述:“不過這種模式要玩好,還需要後臺配置支援……所以呢,你要在服務端增加一個覆蓋所有情況的候選資源:如果
URL 匹配不到任何靜態資源,則應該返回同一個 index.html 頁面,這個頁面就是你 app 依賴的頁面。”

對於一般的 Vue + Vue-Router + Webpack + XXX 形式的 Web 開發場景,用 history 模式即可,只需在後端(Apache 或 Nginx)進行簡單的路由配置,同時搭配前端路由的 404 頁面支援。

相關文章