Angular9 LocationStrategy 和瀏覽器網(wǎng)址樣式

2020-07-08 11:54 更新

當路由器導航到一個新的組件視圖時,它會用該視圖的 URL 來更新瀏覽器的當前地址以及歷史。 嚴格來說,這個 URL 其實是本地的,瀏覽器不會把該 URL 發(fā)給服務器,并且不會重新加載此頁面。

現(xiàn)代 HTML 5 瀏覽器支持 history.pushState API, 這是一項可以改變?yōu)g覽器的當前地址和歷史,卻又不會觸發(fā)服務端頁面請求的技術。 路由器可以合成出一個“自然的”URL,它看起來和那些需要進行頁面加載的 URL 沒什么區(qū)別。

下面是危機中心的 URL 在 “HTML 5 pushState” 風格下的樣子:

老舊的瀏覽器在當前地址的 URL 變化時總會往服務器發(fā)送頁面請求……唯一的例外規(guī)則是:當這些變化位于 “#”(被稱為“hash”)后面時不會發(fā)送。通過把應用內的路由 URL 拼接在 # 之后,路由器可以獲得這條“例外規(guī)則”帶來的優(yōu)點。下面是到危機中心路由的 “hash URL”:

路由器通過兩種 LocationStrategy 提供者來支持所有這些風格:

PathLocationStrategy - 默認的策略,支持 “HTML 5 pushState” 風格。

HashLocationStrategy - 支持 “hash URL” 風格。

RouterModule.forRoot() 函數(shù)把 LocationStrategy 設置成了 PathLocationStrategy,使其成為了默認策略。 你還可以在啟動過程中改寫(override)它,來切換到 HashLocationStrategy 風格。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號