gpt4 book ai didi

javascript - BrowserRouter 与服务器有什么关系?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:30:14 25 4
gpt4 key购买 nike

我读了这个声明:

The BrowserRouter should be used when you have a server that will handle dynamic requests (knows how to respond to any possible URI), while the HashRouter should be used for static websites (can only respond to requests for files that it knows about).

我从 this 得到的.

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

服务器在哪里与上述声明中提到的 BrowserRouter 一起发挥作用?

最佳答案

为 HashRouter 更新:

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

早些时候:

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

然后根据默认组件中的逻辑,例如 App,您会将用户重定向到 /login 路由,并且登录组件由 react-router 挂载。现在的 URL 是 ://www.mysite.com/login,到目前为止一切正常!

现在假设用户此时将页面添加为书签并稍后访问它,或者只是单击刷新。浏览器现在将向服务器请求位于 ://www.mysite.com/login 的页面,这是服务器必须发回 index.html 的地方。

事实上,对于单页应用程序(又名 SPA),对于所有客户端路由,服务器必须发回您应用程序的 Bootstrap 文件,即 index.html

这就是引号中的语句的意思。您必须将服务器配置为针对任何动态路径发回 index.html。

希望这有帮助:)。

关于javascript - BrowserRouter 与服务器有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46481682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com