服务端渲染
最近各个框架都开始发布属于自己的服务端渲染方案。
服务端渲染我觉得有两个好处:
- 更好的SEO
- 更好的浏览体验
至于坏处,我个人认为只有一个,那就是项目会占用更多服务器的资源。
如果玩过服务器的朋友,应该知道,服务器的内存是非常昂贵的,往往增加1G的内存,每个月就需要多增加几十块钱的服务器成本。
而使用服务端渲染,相当于是在服务器上面启动了一个Node服务,而Node服务是基于V8引擎的,V8占用内存量非常大,一般一个服务端渲染项目占用内存高达1G~2G。
而如果使用客户端渲染,那么一个项目占用服务器的内存量几乎可以忽略不计。
同时服务端渲染不光吃服务器的内存,还会占用服务器的CPU资源。
因为服务器会运行编译器将js代码编译成HTML。
所以很多框架都附带编译时服务端渲染方案,即在编译的时候,就将相关的代码渲染成HTML,这样既拥有了更好的体验、SEO,又减少服务器的资源开销。
编译时和运行时
既然编译时就能将代码渲染成HTML,那么为什么还需要运行时呢?
由于现在的项目结构都是前后端分离,所以很多动态内容需要请求后端进行获取实时数据,编译时无法获取实时数据,而运行时可以在服务端获取这些数据后,渲染成HTML,然后返回给客户端。
框架推荐
Next.js
React 技术栈服务端渲染框架,同时React 19与其深度绑定,React 19中推出的服务器组件需要配合Next使用。
Nuxt.js
Vue 技术栈服务端渲染框架。
Astro.js
一个新晋的前端框架。它可以用来构建个人网站、博客,支持MD、MDX文件,同时使用插件可以扩展支持React、Vue组件。