我有一个简单的应用程序,显示用户的评论列表.点击用户后,该应用应转到/ 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应用程序通常最初只是客户端,如您所注意到的那样附加到节点.这就是它如此迅速的原因:只有API调用,没有重新渲染.
同构应用程序也在服务器上运行,这有助于回退(没有JS)以及SEO和社交共享(Facebook需要阅读HTML元标记.这根本不容易实现.你也可以得到真正的幻想和来自服务器渲染的水合物,这加速了那些更深层页面上的用户体验.
您可能永远不会想要的只是渲染服务器端.有点想念React的全部力量.
启动客户端,使用一些像https://github.com/erikras/react-redux-universal-hot-example这样的良好样板,它将带您一直到同构并再次返回.