【问题标题】:Should I use express, client-side react router or server-side react router?我应该使用快速、客户端反应路由器还是服务器端反应路由器?
【发布时间】:2016-02-05 00:06:09
【问题描述】:

我有一个简单的应用程序,它显示用户的 cmets 列表。单击用户时,应用程序应转到 /users/<id> 并显示一个新页面,其中包含将从 MongoDB 查询的用户详细信息。我很难理解该逻辑应该在哪里。

我看到了在客户端中使用 react 路由器的示例:

render((
<Router>
  <Route path="/" component={App}>
     <Route path="/user/:userId" component={User}/>
  </Route>
</Router>
), document.body)

但在服务器端也是这样:

<Route name="root" path="/" handler={require('./handlers/Root')}>

并且还使用快速路由:

app.get('/', function home (req, res, next) {
  res.render('layout', {
    reactHtml: React.renderToString(<App />)
  });
});

app.get('/user', function home (req, res, next) {
  res.render('layout', {
    reactHtml: React.renderToString(<User />)
  });
});

哪一个是要走的路?有什么区别?

【问题讨论】:

  • 您是如何决定这样做的?我不确定 React Router 和 Express 应该如何协同工作。

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


【解决方案1】:

React 应用程序通常最初只是客户端,如您所见,附加到节点。这就是它如此快速的原因:只有 API 调用,没有重新渲染。

同构应用程序也在服务器上运行,这有助于回退(无 JS)以及 SEO 和社交共享(Facebook 需要读取 HTML 元标记。这根本不容易实现。你也可以得到服务器渲染真的很漂亮和水合,这加速了那些更深层次的页面上的用户体验。

您可能永远不会想要的只是渲染服务器端。有点错过 React 的全部功能。

启动客户端,使用像 https://github.com/erikras/react-redux-universal-hot-example 这样的良好样板文件,它将带您一路同构并再次返回。

【讨论】:

    【解决方案2】:

    使用 react 可以创建单页应用程序,因此您将永远不会重新加载页面,使用 express 您正在使用 php 制作像 apache 这样的服务器

    【讨论】:

    • 所以你是说我应该只使用节点提供一个文件,然后将我的所有逻辑都放在客户端中?
    • 如果你选择做一个 React 应用是
    • 这种方法如何与服务器端渲染一起使用?似乎只有根元素会被渲染,然后一切都将是客户端
    猜你喜欢
    • 2018-02-05
    • 2015-09-06
    • 2015-10-13
    • 2020-12-11
    • 2016-02-05
    • 2016-05-26
    • 2021-03-20
    • 2017-01-22
    • 2016-03-10
    相关资源
    最近更新 更多