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?
针对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.
希望这可以帮助 :).
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |