页面渲染大致经历了几个阶段:后端模板渲染、客户端渲染、node中间层、服务器端渲染(ssr)。
1、后端模板渲染
最初的渲染方式就是后端模板渲染,由后端模板引擎渲染好HTML后,返回给前端。前端用js去执行dom操作或者发送ajax请求数据,渲染其他动态部分。
基本的交互方式是:
1)前端请求一个地址url
2)后端接受这个请求,然后根据请求信息从数据库或者其他地方获取响应数据。
3)使用模板引擎如jsp将这些数据渲染成HTML
4)将HTML文本返回给前端。
在这个过程中前端的代码要嵌入后端的代码中造成:
1)前后端代码杂糅在一起,不方便本地开发、调试和自动化测试。
2)前端被约束在后端开发模式中,不能充分使用前端的构建生态,效率低下。
3)项目难以维护,遇到问题职责不清。
这种渲染方式好处是:
1)前端快速呈现服务器端渲染好的页面,用户体验良好。
2)SEO良好。
现在早期的一些网站,或者需要快速响应的展示性网站仍然采取这种方式。
2、客户端渲染
随着前后端分离的发展,以及前端组件化技术的出现。客户端渲染成为了主流。如vue react
基本交互方式是:
1)前端发送一个请求URL
2)后端接受这个请求,返回HTML文件
3)前端解析js后,通过ajax获取相应的数据
4)客户端将这些数据渲染成页面。
好处:
1)前端与后端分离,前后端只通过ajax交互数据。
2)让前端独立出来,更好的使用前端强大的生态。
坏处:
1)首屏加载缓慢,因为要等js加载完毕后才能渲染。
2)SEO不友好,因为HTML中几乎没有可用的信息。
3、node中间层
为了解决客户端渲染不足,便出现了node中间层概念。就是后端提供数据,node层渲染模板,前端展示页面。其中node层由前端人员负责。决定哪些页面在客户端渲染,哪些页面在服务端渲染。
交互方式:
1)前端请求一个url地址。
2)node层接收请求,根据请求信息,向后端服务器发起请求。
3)服务器接收请求,根据请求信息,从数据库或其他地方获取数据,返回给node层
4)node根据数据渲染好首屏html,返回给前端。
好处:
1)SEO良好,首屏加载快速。
2)同时保证前后端分离。
坏处:
1)加了一层中间层,应用性能有所降低。
2)增加了前端架构的复杂度,对开发人员要求高。
4、服务端渲染(ssr)
一般来说,服务端渲染与node中间层是同一个概念。特指在node中间层的基础上,加上前端组件化技术在服务器端的渲染。因为前端组件化技术是给客户端用的,用在服务器端就比较困难,ssr就是为了解决这一问题。
总结
技术的发展在很大程度上是由需求推动的。反过来技术的发展又会提出新的需求。只有不断的更新自己的技术,才能完成新的需求。学海无涯,与君共勉。