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

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

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


其实没明白你用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里面当静态内容用就是了。这样整个架构比较清晰简单。


  1. 首屏由后端渲染的优势不用多说。

  2. 题主其实想问的是React的Server Rendering吧,React的后端渲染(同构)稍微麻烦一些:

详细可以进这个回答里:http://.com/q/1010000004129678/a-1020000004130487


怎么个不好配合法咧?
res.render把你需要显示的必要HTML内容先返回-页面的整体页面框架,需要用到的CSS、JS脚本等。
后续的用户交互需要使用的数据再通过ajax的get/post方法获取就好了。
这个有利于用户的交互体验~~~


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

【热门文章】
【热门文章】