反应路由器中hashHistory和browserHistory有什么区别?

时间:2016-03-29 16:15:58

标签: javascript reactjs react-router

我搜索了一下,但我没有找到以下问题的明确答案:react-router中的hashHistory和browserHistory有什么区别?

4 个答案:

答案 0 :(得分:45)

基本区别在于hashHistory使用以下网址:http://myurl.com/#page/another_page/another_page

使用BrowserHistory,您可以获得正常的网址(无哈希):http://myurl.com/page/another_page/another_page

答案 1 :(得分:3)

我不认为这个问题是要求格式的差异,而是技术上的差异。因此,在这里分享这个答案的技术差异:https://stackoverflow.com/a/42157741/2445694

基本上,浏览器不会在#

之后发送网址

因此,假设网站限制了成员和管理员的区域。用户导航到/ member,并提示登录。但是,服务器在登录登录页面之前不知道用户是否正在尝试访问/ admin或/ member,因此在登录服务器之后don& #39;知道重定向的位置。

答案 2 :(得分:2)

第一个区别:

他们使用不同的WEB API。 <HashRouter>使用并读取URL中的哈希值, <BrowserRouter>使用window.history WEB API。

第二个区别:

<HashRouter>用于静态单页网站。适用于基于浏览器的项目。 <BrowserRouter>用于动态网站。当您拥有一个处理动态请求的服务器时,应该使用它(知道如何响应任何可能的URL)。

答案 3 :(得分:1)

1)浏览器历史记录的位置数组不仅包含我们的应用程序中访问过的位置。允许访问此列表会泄漏有关用户不应允许访问网站的浏览历史记录的信息。

2)浏览器历史记录创建位置对象,其路径名是URL的完整路径名。但是,您可以为历史记录指定基本名称,在这种情况下,将完全忽略完整路径名的一部分。

3)静态文件服务器中的浏览器历史记录将在我们的服务器上有一个真实位置来获取我们的HTML,而哈希历史记录使用URL的哈希部分来设置和读取位置。

4)哈希历史记录是依赖的,因为它将所有路径信息存储在URL的哈希中。