最近在把一个c端的项目重构成首屏服务端渲染(SSR:server side render)
项目用到的技术: React 、webpack、koa2、webpack
对于重构成SSR,redux并不是必须的,所以没用redux
本篇文章先讲述一些理论的东西,之后会写代码篇
一、 什么是服务端渲染
简单理解是将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序
如下图所示,
下图页面没使用服务渲染,当请求user页面时,返回的body里为空,之后执行js将html结构注入到body里,结合css显示出来;
下图页面使用了服务端渲染,当请求user页面时,返回的body里已经有了首屏的html结构,之后结合css显示出来
二、 使用SSR的利弊
-
更利于SEO。
不同爬虫工作原理类似,只会爬取源码,不会执行网站的任何脚本(Google除外,据说Googlebot可以运行javaScript)。使用了React或者其它MVVM框架之后,页面大多数DOM元素都是在客户端根据js动态生成,可供爬虫抓取分析的内容大大减少(如图一)。另外,浏览器爬虫不会等待我们的数据完成之后再去抓取我们的页面数据。服务端渲染返回给客户端的是已经获取了异步数据并执行JavaScript脚本的最终HTML,网络爬中就可以抓取到完整页面的信息。 -
更利于首屏渲染
首屏的渲染是node发送过来的html字符串,并不依赖于js文件