2016-03-29 132 views
29

我已經搜索了一些,但我沒有找到明確的答案,以下問題:hashHistory和browserHistory之間的反應路由器有什麼區別?反應路由器中hashHistory和browserHistory有什麼區別?

+1

請參閱react-router文檔:https://github.com/reactjs/react-router/blob/master/docs/API.md#browserhistory(以及下面的哈希歷史記錄條目) –

+0

[React-路由器文檔](https://github.com/reactjs/react-router/blob/master/docs/guides/Histories.md#browserhistory)有很好的關於差異的信息。文檔也將跟隨API的變化,所以在這裏諮詢那些而不是快速陳舊的解釋將是最好的。 – markthethomas

+0

自上述兩條評論以來,文檔已移動。試試這裏:https://github.com/ReactTraining/react-router/blob/v3/docs/guides/Histories.md –

回答

32

的基本區別是,hashHistory使用URL,如:http://myurl.com/#page/another_page/another_page

隨着BrowserHistory你得到正常的URL(無散):http://myurl.com/page/another_page/another_page

+6

這個hashHistory Url有什麼好處或缺點(如果有的話)? – Rob

+0

browserHistory可以用來保持瀏覽器鏈接錨定能力嗎?我在我的路由器上嘗試了這種方法https://github.com/ReactTraining/react-router/issues/394#issuecomment-220221604,並在每個主播點擊獲取重播 – BigDong

+0

看看這篇文章。我認爲這是你正在尋找的東西:http://stackoverflow.com/a/40280486/217187。但看起來的答案是肯定的。 – smcdrc

2

我不認爲這個問題是問在格式差異,而是技術性的。因此,有技術區別就在這裏分享這樣的回答:https://stackoverflow.com/a/42157741/2445694

基本上瀏覽器不會在#

後發送URL,這樣假設一個網站限制爲會員和管理員的區域。用戶導航到/ member,並提示登錄。但是,在登錄頁面之前,服務器將不知道用戶是否嘗試訪問/ admin或/ member,因此登錄服務器後不要知道在哪裏重定向。

1

1)瀏覽器的歷史位置數組不僅包含在我們的應用程序中訪問過的位置。允許訪問此列表會泄露有關用戶的瀏覽歷史記錄的信息,即網站不應被允許訪問。

2)瀏覽器歷史記錄創建位置對象,其路徑名是URL的完整路徑名。但是,您可以爲歷史記錄指定一個基本名稱,在這種情況下,完整路徑名的一部分將被有效忽略。

3)靜態文件服務器中的瀏覽器歷史記錄將在我們的服務器上有一個實際位置來獲取我們的HTML,而哈希歷史使用URL的哈希部分來設置和讀取位置。

4)哈希歷史是依賴的,因爲它將所有的路徑信息存儲在URL的哈希中。

相關問題