如何使用服务器上的react路由器处理所有可能的路由

how do i handle every route possible with a react router at the server?

本文关键字:处理 有可能 路由 路由器 react 何使用 服务器      更新时间:2023-09-26

遵循react路由器中的自述文件:

var routes = (
  <Route name="app" path="/" handler={App}>
    <Route name="inbox" handler={Inbox}/>
    <Route name="calendar" handler={Calendar}/>
    <DefaultRoute handler={Dashboard}/>
  </Route>
);
Router.run(routes, function (Handler) {
  React.render(<Handler/>, document.body);
});

由于对节点非常新鲜,并且有一个信誉良好的前端js框架,请原谅这个愚蠢的问题。。

如何最好地在服务器上处理路由?

我的意思是,当有人登陆/calendar时会发生什么,我是否必须适应反应代码中客户端和快速路由中服务器的路由,或者快速路由中是否应该有通配符路由。IE有人登陆/calendar,应该为/表达html并允许反应处理其余内容吗?

谢谢,John

您可以使用React Router来渲染两侧的所有路由。

在服务器端,如果您使用Express或类似软件,这通常意味着创建一些中间件,使用React Router来处理传入请求,而不是使用服务器端lib自己的路由。这个答案中有一个最简单的例子和解释:

  • 客户端路由(使用react路由器)和服务器端路由

对于一个更高级的例子,我有一些Express中间件,它还处理客户端上的数据获取、页面标题生成和引导,这里有文档记录,并链接到相关来源:

  • https://github.com/insin/isomorphic-lab/tree/master#express-中间件源

我不确定它是如何与react路由器协同工作的,但通常在客户端路由中,您只从服务器提供主索引文件,然后客户端处理路由。

使用Express,您可以设置一个始终为您的主索引文件(进而为您的客户端)提供服务的路由。在我的网站上,我使用AngularJS进行路由,并且我在中间件之外唯一的路由是

app.get('/*', function (req, res) {
  res.sendFile('index.html');
});

客户端从那里处理所有路由。