Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript react路由器中hashHistory和browserHistory的区别是什么?_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript react路由器中hashHistory和browserHistory的区别是什么?

Javascript react路由器中hashHistory和browserHistory的区别是什么?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我在谷歌上搜索了不少,但没有找到以下问题的明确答案:react router中hashHistory和browserHistory的区别是什么?基本区别是hashHistory使用的URL如下: 使用BrowserHistory,您可以获得正常的URL(无哈希):我不认为问题在于格式上的差异,而是技术上的差异。因此,在这里分享这个答案,但有一个技术上的区别: 基本上,浏览器不会在# 因此,假设一个网站限制了成员和管理员的访问区域。用户导航到/member,并被提示登录。但是,服务器在登录页面之前

我在谷歌上搜索了不少,但没有找到以下问题的明确答案:react router中hashHistory和browserHistory的区别是什么?

基本区别是hashHistory使用的URL如下:


使用BrowserHistory,您可以获得正常的URL(无哈希):

我不认为问题在于格式上的差异,而是技术上的差异。因此,在这里分享这个答案,但有一个技术上的区别:

基本上,浏览器不会在#

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

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

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

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

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

第一个区别:

他们使用不同的WEB API。
使用并读取URL中的哈希,
使用
窗口。历史
WEB API

第二个区别:

用于静态单页网站。非常适合基于浏览器的项目。
用于动态网站。当您的服务器将处理动态请求(知道如何响应任何可能的URL)时,应使用此选项。

请参阅此处的react router文档:(以及下面的哈希历史记录条目)中有关于差异的非常好的信息。文档也将跟随API的变化,因此最好在这里参考这些变化,而不是快速过时的解释。试试这里:这个hashHistory Url有什么优点或缺点(如果有的话)?browserHistory可以用来保留浏览器链接锚功能吗?我已经在我的路由器上尝试过这种方法,每次点击主播都会重新浏览这个帖子。我想这就是你要找的。但答案似乎是肯定的。哈希历史也适用于传统浏览器。这个小小的答案让我很高兴,非常清楚,非常明显,但在
React Router
version 4中,不幸的是我们无法使用它们。