认识后端模板渲染、客户端渲染、node 中间层、服务器端渲染

[原文]segmentfault.com/a/1190000016704384

一、后端模板渲染

好处:

  1. 前端能快速呈现服务器端渲染好的页面,而不用等客户端渲染,提供很好的用户体验
  2. SEO友好

不足:

  1. 前后端杂揉在一起,不方便本地开发、本地模拟调试,也不方便自动化测试
  2. 前端被约束在后端开发的模式中,不能充分使用前端的构建生态,开发效率低下
  3. 项目难以管理和维护,也可能会有前后端职责不清的问题

二、客户端渲染(随着前端工程化、前后端分离、前端组件化技术发展)

好处:

  1. 前端独立出来,可以充分使用前端生态的强大功能
  2. 更好的管理代码,更有效率的开发、调试、测试
  3. 前后端代码解耦之后,能更好的扩展、重构

不足:

  1. 首屏加载缓慢,因为要等Javascript脚本加载完毕后,才能进行渲染
  2. SEO不友好,因为HTML中几乎没有可用的信息

场景:

不需要首屏快速加载、SEO 友好的,用全客户端渲染

三、node中间层渲染

好处:

扫描二维码关注公众号,回复: 6154710 查看本文章
  1. 保留后端模板渲染、首屏快速响应、SEO 友好
  2. 保留前端后分离(只是首屏由服务器端渲染、其他都由客户端渲染)

不足:

  1. 增加了一个中间层,应用性能有所降低
  2. 增加了架构的复杂度、不稳定性,降低应用的安全性
  3. 对开发人员要求高了很多

场景:

  • 如果技术团队不支持,不建议在需要首屏快速加载、SEO 友好的地方使用如 React、 vue等组件化技术。
  • 如果使用了React、vue等组件化技术,一般就使用其对应提供的ssr。

四、服务器端渲染ssr(一般特指在node中间层基础上加上前端组件化技术在服务器端的渲染)

说明:

react、vue、angular 等框架的出现,让前端组件化技术深入人心,但在一些需要首屏快速加载与 SEO 友好的页面就陷入了两难的境地了。因为前端组件化技术天生就是给客户端渲染用的,而在服务器端需要被渲染成HTML文本,这确实不是一件很容易的事,所以服务器端渲染(ssr)就是为了解决这个问题——让前端组件化能够在服务器端渲染,如next.js、nuxt.js、razzle、react-server、beidou等。以next.js为例,整个应用中是没有HTML文件的,所有的响应HTML都是node动态渲染的,包括里面的元信息、css、js等,在渲染过程中,next.js会根据路由,将首页所有的组件渲染成html,而其他保留原生组件的形式在客户端渲染。

好处:

与node中间层渲染一样。

场景:

需要首屏快速加载、SEO 友好。

五、其他

如果是前后端分离,也可以使用后端模板渲染。

说明:

前端调试需要搭配handlebars、ejs等模板引擎进行本地调试,后端调试需要测试机。

猜你喜欢

转载自blog.csdn.net/hoanFir/article/details/89922832