所有反应请求如何转到index.js文件?

时间:2018-01-14 21:03:48

标签: reactjs react-router

我对路由与react-router的工作方式有点混淆。

通常,当请求到达服务器以获取请求时:

http://www.example.com/path/to/file

请求将进入该文件的服务器,然后框架将处理请求。

使用react路由器,这是如何工作的?做事以某种方式在客户端(浏览器)被拦截,然后只有对index.html的请求将被发送到实际的Web服务器?

我假设以某种方式对/ path / to / file的请求被javascript捕获,只有对index.html的请求才能进入服务器,但它是如何做到的?

2 个答案:

答案 0 :(得分:0)

React路由器是一个客户端路由器,所以当我们为nginx或任何网络服务器配置反应路由器时,我们指定并只发送一个名为index.html的文件,然后由反应路由器提供的JavaScript代码确定哪个通过查看浏览器的路径和历史来提供服务的组件。

所以无论你请求它的哪条路径间接获得请求的index.html,但是有一条不同的路径然后计算出该做什么。

答案 1 :(得分:0)

答案的一部分是查看路由器的basename prop。之后的所有内容都在客户端处理,作为与应用当前状态对应的位置。

答案的另一部分是当使用BroswerRouter时(而不是在本地应用程序状态之前在URL中使用#separator的HashRouter),服务器必须为任何路由提供应用程序“index.html”不对应于实际的静态资源或API路由。这通常被视为服务器的回退行为。

使用BrowserRouter时,如果您的服务器基本网址为http://example.com/app,并且您当前的应用状态为/ user / 12,则会生成当前浏览器网址http://example.com/app/user/12。如果您刷新浏览器,它会向http://example.com/app/user/12发出请求,您的服务器应用必须使用应用的index.html进行回答。加载后,react路由器会根据配置的基本名称将当前状态解释为/ user / 12。

使用具有相同服务器基本网址和应用状态的HashRouter时,当前浏览器网址为http://example.com/app/#/user/12,当刷新页面时,浏览器会向http://example.com/app/发送请求