繁体   English   中英

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

[英]What is the difference between hashHistory and browserHistory in react router?

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

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

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

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

基本上浏览器在#之后不发送url

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

第一个区别:

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

第二个区别:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM