我应该使用快速、客户端反应路由器还是服务器端反应路由器?
Posted
技术标签:
【中文标题】我应该使用快速、客户端反应路由器还是服务器端反应路由器?【英文标题】: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 应该如何协同工作。 【参考方案1】:React 应用程序通常最初只是客户端,如您所见,附加到节点。这就是它如此快速的原因:只有 API 调用,没有重新渲染。
同构应用程序也在服务器上运行,这有助于回退(无 JS)以及 SEO 和社交共享(Facebook 需要读取 HTML 元标记。这根本不容易实现。你也可以得到服务器渲染真的很漂亮和水合,这加速了那些更深层次的页面上的用户体验。
您可能永远不会想要的只是渲染服务器端。有点错过 React 的全部功能。
启动客户端,使用像 https://github.com/erikras/react-redux-universal-hot-example 这样的良好样板文件,它将带您一路同构并再次返回。
【讨论】:
【参考方案2】:使用 react 可以创建单页应用程序,因此您将永远不会重新加载页面,使用 express 您正在使用 php 制作像 apache 这样的服务器
【讨论】:
所以你是说我应该只使用节点提供一个文件,然后将我的所有逻辑都放在客户端中? 如果你选择做一个 React 应用是 这种方法如何与服务器端渲染一起使用?似乎只有根元素会被渲染,然后一切都将是客户端以上是关于我应该使用快速、客户端反应路由器还是服务器端反应路由器?的主要内容,如果未能解决你的问题,请参考以下文章