【问题标题】:how do i handle every route possible with a react router at the server?我如何使用服务器上的反应路由器处理所有可能的路由?
【发布时间】:2015-06-09 16:29:34
【问题描述】:

关注readme in the react-router

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);
});

对 node 和有信誉的前端 js 框架非常新鲜,请原谅这个菜鸟问题..

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

我的意思是,当有人登陆/calendar 时会发生什么,我是否必须在反应代码中适应客户端的路由和在快速路由中的服务器,或者是否应该在 express 上有通配符路由。 IE 有人登陆 /calendar,是否应该将 / 的 html 快递到 html 并让 react 处理其余部分?

谢谢, 约翰

【问题讨论】:

    标签: javascript node.js express reactjs react-router


    【解决方案1】:

    你可以使用 React Router 在两边渲染所有个路由。

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

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

    【讨论】:

      【解决方案2】:

      我不确定它是如何与 react-router 一起工作的,但通常对于客户端路由,您只提供来自服务器的主索引文件,然后客户端处理路由。

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

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

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

      【讨论】:

      • 好的好的,谢谢。为了帮助预加载信息,尝试捕获请求的路径是一个好主意,还是不是这个主意?
      猜你喜欢
      • 1970-01-01
      • 2018-02-05
      • 2018-06-02
      • 2016-05-15
      • 1970-01-01
      • 2019-06-02
      • 2016-02-05
      • 2016-08-16
      • 1970-01-01
      相关资源
      最近更新 更多