在学习node.js模板引擎渲染的过程中,发现一个问题,为什么一些场景下会使用服务端渲染?
客户端渲染:
- 客户端向服务端发送请求,请求一次 html页面。
- 服务端返回页面(页面字符串)。
- 客户端收到响应页面,从上到下依次解析,当有需要渲染的css、js文件,则再次发起ajax请求。
- 服务端返回相应的数据和文件。
- 客户端拿到ajax响应结果,进行模板引擎渲染,将数据渲染为响应页面。
服务端渲染:
- 客户端向服务端请求一次。
- 服务端返回页面+数据,在发送给客户端前,对页面进行初始渲染处理。例如在node.js中:
var 渲染结果 = template.render( 模板字符串,{ 解析替换对象 } )
response.end( 渲染结果 ) - 响应结果就是最终结果,客户端无需再次请求,浏览器完成解析。
选择的原因:
- 服务端渲染是可以被爬虫抓取到的,客户端异步渲染不利于 SEO 搜索引擎优化,是很难被爬虫抓取到的。
- 例如购物网站的商品列表采用的是服务端渲染,目的了为了 SEO 搜索引擎优化,可以被搜索到相应的数据;而它的商品评论列表为了用户体验,而且也不需要 SEO 优化,所以采用是客户端渲染,不用刷新页面即可加载更多数据。
- 因此多数网站都根据不同需要采用两种渲染方式。