我在谷歌上搜索了很多,但我没有找到以下问题的明确答案:react-router 中的 hashHistory 和 browserHistory 之间有什么区别?
react router中的hashHistory和browserHistory有什么区别?
基本区别在于 hashHistory 使用的 URL 如下:http ://myurl.com/#page/another_page/another_page
使用 BrowserHistory,您可以获得正常的网址(无哈希):http : //myurl.com/page/another_page/another_page
第一个区别:
他们使用不同的 WEB API。
<HashRouter>
使用并从 URL 读取哈希,
<BrowserRouter>
使用window.history
WEB API。
第二个区别:
<HashRouter>
用于静态单页网站。非常适合基于浏览器的项目。
<BrowserRouter>
用于动态网站。当您拥有处理动态请求的服务器(知道如何响应任何可能的 URL)时应使用。
我认为问题不是要求格式上的差异,而是技术上的差异。因此在这里分享这个有技术差异的答案:https : //stackoverflow.com/a/42157741/2445694
基本上浏览器不会在 # 之后发送 url
所以假设一个网站限制了成员和管理员的区域。用户导航到 /member,并被提示登录。但是,在进入登录页面之前,服务器不会知道用户是在尝试访问 /admin 还是 /member,因此在登录服务器后不要知道重定向到哪里。
1) 浏览器的历史位置数组包含的不仅仅是在我们的应用程序中访问过的位置。允许访问此列表会泄露有关不应允许网站访问的用户浏览历史记录的信息。
2) 浏览器历史创建位置对象,其路径名是 URL 的完整路径名。但是,您可以为历史指定一个基本名称,在这种情况下,完整路径名的一部分将被有效地忽略。
3) 静态文件服务器中的浏览器历史将在我们的服务器上有一个真实的位置来获取我们的 HTML,而哈希历史使用 URL 的哈希部分来设置和读取位置。
4) 哈希历史是依赖的,因为它将所有路径信息存储在 URL 的哈希中。