页面首次渲染时怎样获取数据比较好?
从刚开始学Node.js用Express框架写东西的时候一直都是用res.render()
的形式传递首次渲染的数据,但是我感觉这样不太好和其他的前端框架配合啊,比如用React的话是不是应该把获取数据的过程放在组件声明周期中get更合理呢?这样的话可能首次渲染就会需要很多的get请求,会不会对性能有很大影响?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
其实没明白你用Express在做什么。
是Host整个网站页面还是只做API返回数据?
如果是Host整个网站,那么还得分你需不需要SEO.
只说Host网站
需要SEO
那么你应该在res.render()的时候返回一个完整的页面(包含数据的,因为搜索引擎在爬页面的时候是不执行Js的),如果用React的话,你可以用React的服务器渲染方法来做,其他的框架得看情况。
不需要SEO
那么就像@kikong说的,只需要返回一个页面框架(包含必要的JS和CSS),然后在前端渲染的时候掉Ajax拿数据,比如React就在component的componentDidMount的时候调Ajax就行了。
PS:如果是不需要SEO的情况,其实你不需要用express返回html,只在express里面做API返回数据就行了。那个Html直接放到apache里面当静态内容用就是了。这样整个架构比较清晰简单。
怎么个不好配合法咧?
res.render把你需要显示的必要HTML内容先返回-页面的整体页面框架,需要用到的CSS、JS脚本等。
后续的用户交互需要使用的数据再通过ajax的get/post方法获取就好了。
这个有利于用户的交互体验~~~
首屏由后端渲染的优势不用多说。
题主其实想问的是React的Server Rendering吧,React的后端渲染(同构)稍微麻烦一些:
详细可以进这个回答里:http://segmentfault.com/q/1010000004129678/a-1020000004130487
React有专门的服务端渲染首屏的方法,详见express-react-views,相当于把JSX当做jade这样的模板引擎再用,在服务端直接将首屏的虚拟DOM转化为真实DOM的后发送到客户端,速度比放在组件声明周期中拿数据快多了,而且SEO完美。