页面首次渲染时怎样获取数据比较好?

从刚开始学Node.js用Express框架写东西的时候一直都是用res.render()的形式传递首次渲染的数据,但是我感觉这样不太好和其他的前端框架配合啊,比如用React的话是不是应该把获取数据的过程放在组件声明周期中get更合理呢?这样的话可能首次渲染就会需要很多的get请求,会不会对性能有很大影响?

阅读 6k
4 个回答

其实没明白你用Express在做什么。
是Host整个网站页面还是只做API返回数据?
如果是Host整个网站,那么还得分你需不需要SEO.

只说Host网站

  1. 需要SEO
    那么你应该在res.render()的时候返回一个完整的页面(包含数据的,因为搜索引擎在爬页面的时候是不执行Js的),如果用React的话,你可以用React的服务器渲染方法来做,其他的框架得看情况。

  2. 不需要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有专门的服务端渲染首屏的方法,详见express-react-views,相当于把JSX当做jade这样的模板引擎再用,在服务端直接将首屏的虚拟DOM转化为真实DOM的后发送到客户端,速度比放在组件声明周期中拿数据快多了,而且SEO完美。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题