BrowserRouter如何与服务器相关?

Cap*_*ree 3 javascript reactjs react-router

我读了这句话:

当你有一个处理动态请求的服务器(知道如何响应任何可能的URI)时,应该使用BrowserRouter,而HashRouter应该用于静态网站(只能响应它知道的文件请求).

从我得到了它这个.

我不明白它是什么意思,当它说BrowserRouter should be used when you have a server that will handle dynamic requests.我想当你点击一个特定的Link(在React的情况下),路由器将加载特定的组件,这是在Javascript的客户端完成(基本上替换元素在具有特定组件代码的DOM中).

如上所述,服务器在哪里使用BrowserRouter?

haz*_*ous 7

针对HashRouter进行了更新:

在哈希路由器的情况下,您的客户端路由看起来像这样 - ://www.mysite.com/#login.由于它#是一个仅限客户端的片段,并且永远不会发送到浏览器,即使用户将其加入书签,浏览器仍然://www.mysite.com/只会请求删除该#login部分.因此,服务器永远不需要被任何动态路径所困扰.虽然这可能看起来更简单,但在消极方面,你最终会失去传统(和实际)目的#,即拥有本地锚点.因此,除非您针对没有历史API的旧版浏览器,否则应避免使用此方法.

早些时候:

假设部署了您的Web应用程序://www.mysite.com/.并且您有一个客户端路由,您可以/login在其上呈现处理身份验证的Login组件.因此,当用户首次访问您的页面时,服务器通常会发送index.html到浏览器,它将引导您的React应用程序.

然后根据默认组件中的逻辑说明App,您将用户重定向到/login路由,并通过react-router挂载Login组件.网址现在是://www.mysite.com/login,到目前为止一切都很好!

现在说用户此时为页面添加了书签并稍后访问它,或者只是点击刷新.浏览器现在会向服务器询问页面,://www.mysite.com/login这是服务器必须发回的位置index.html.

实际上,对于所有客户端路由的单页面应用程序(即SPA),服务器必须发送回应用程序的引导程序文件,即index.html.

这就是引号中该语句的含义.您必须将服务器配置为发送回任何动态路径的index.html.

希望这可以帮助 :).