1.什么是服务端渲染?使用React构建客户端应用程序。默认情况下,可以在浏览器中输出React组件来生成DOM并操作DOM。React也可以在服务端通过Node.js转成HTML,并直接在浏览器端“渲染”处理后的HTML字符串。这个过程可以被认为是“同构的”,因为应用程序的大部分代码都可以存储在服务器端。并在客户端运行。二、为什么要用服务端渲染?服务器端渲染(SSR)的主要优点是:更好的SEO,因为搜索引擎爬虫可以直接查看完全渲染的页面。更好的用户体验,对于较慢的网络条件或较慢的设备,资源浏览器将在加载资源后直接呈现,而不是等待所有JavaScript下载并执行后再显示服务器呈现的HTML。3、服务端渲染方式方法一:传统的服务端渲染方式解决用户体验和更好的SEO。使用这种方法的工具有很多,比如React(Next.js)、Vue(Nuxt.js)等。有些工具在服务端生产环境运行webpack,实时编译,并缓存编译结果。这仍然是一种传统的方式,但是在服务端实时编译运行webpack仍然是开发环境预编译编译的问题。而这里,将webpack放在开发环境中,只做开发打包功能,将clientbundle、serverbundle、资源映射文件assets.json、css等资源打包部署。服务器包用于服务器端渲染(SSR);clientbundle加载到浏览器,浏览器通过bundle加载更多其他模块(chunk)js;资源映射文件assets.json是,serverbundle正在准备需要的HTML,需要预先插入那些模块(chunk)js,和CSS,这只是提高了用户体验。方法二:这是一个创新的方法。前端单页应用,以前怎么玩,现在怎么玩,多了一步,你得先接入一个Rendora服务,在前端render中拦截是否需要server。下图是官方图:这个方法本来只是一个idea。思路是前端不需要关心服务端的渲染。不就是为了解决SEO吗?,当这些爬虫来的时候,可以通过header信息判断,写一个服务,然后给爬虫需要的内容。这个方法很好。之前写的项目不用改一个字,启动Rendora服务即可。对于前端服务器或外部(百度谷歌爬虫)的每一个请求,Rendora都会根据配置文件中的header和path进行检测或过滤,以确定Rendora是否应该只传递后端服务器返回的初始HTML或使用Chrome提供无头服务器端呈现的HTML。更具体地说,对于每个请求,有2条路径:1.请求被列入白名单作为SSR的候选者(即过滤后的Get请求),Rendora指示headlessChrome实例请求相应的页面,渲染它,并返回HTML包含最终服务器端呈现的响应。通常只需要将百度、谷歌、必应等网络爬虫列入白名单即可。2.未列入白名单(即请求不是GET请求或未通过任何过滤器),Rendora将简单地充当反向HTTP代理,并按原样传递请求和响应。Rendora可以被视为位于后端服务器(例如Node.js/Express.js、Python/Django等)或您的前端代理服务器(例如nginx、traefik、apache等)之间的反向HTTP代理服务器。Rendora,新方法很强大,优点很多:方便老项目迁移,前后端代码不用改;性能可能更快,资源(CPU)消耗可能更少,用Golang编写的二进制文件;多种缓存策略;已经有一个docker容器解决方案。最后我更推荐Rendora的方式,会是未来。
