Vue Router 支持兩種路由模式:Hash 模式和 History 模式。
1.哈希模式
Hash 模式是通過(guò)改變 URL 中的 hash(#)來(lái)實(shí)現(xiàn)路由的。例如:
http://example.com/#/about
在這個(gè) URL 中,# 后面的 /about 就是路由的路徑。當(dāng)我們點(diǎn)擊頁(yè)面中的鏈接或調(diào)用 router.push() 方法時(shí),Vue Router 會(huì)將新的路由添加到 URL 中的 hash 后面,瀏覽器會(huì)自動(dòng)滾動(dòng)到頁(yè)面中相應(yīng)的位置,并觸發(fā)相應(yīng)的組件渲染。
Hash 模式的實(shí)現(xiàn)原理很簡(jiǎn)單:Vue Router 監(jiān)聽(tīng)瀏覽器的 hashchange 事件,然后根據(jù)當(dāng)前的 hash 值匹配路由表中的相應(yīng)路由,并觸發(fā)相應(yīng)的組件渲染。
2.歷史模式
History 模式是通過(guò) HTML5 中的 history API 來(lái)實(shí)現(xiàn)路由的。例如:
在這個(gè) URL 中,/about 就是路由的路徑。當(dāng)我們點(diǎn)擊頁(yè)面中的鏈接或調(diào)用 router.push() 方法時(shí),Vue Router 會(huì)使用 history.pushState() 方法將新的路由添加到瀏覽器的歷史記錄中,并觸發(fā)相應(yīng)的組件渲染。
History 模式的實(shí)現(xiàn)原理也很簡(jiǎn)單:Vue Router 使用 history.pushState() 方法將新的路由添加到瀏覽器的歷史記錄中,然后通過(guò)監(jiān)聽(tīng) popstate 事件來(lái)響應(yīng)瀏覽器的前進(jìn)和后退按鈕。當(dāng)用戶點(diǎn)擊前進(jìn)或后退按鈕時(shí),Vue Router 根據(jù)當(dāng)前的 URL 匹配路由表中的相應(yīng)路由,并觸發(fā)相應(yīng)的組件渲染。
需要注意的是,使用 History 模式時(shí),需要在服務(wù)器端進(jìn)行相應(yīng)的配置,以確保在用戶直接訪問(wèn)路由時(shí)可以正確地返回對(duì)應(yīng)的頁(yè)面。