SSR简单来说就是页面上的内容是通过服务端渲染生成的,浏览器直接显示服务端返回的html就可以了。相比之前常用的SPA来说有很多的优点,如下图,但也有一些实际存在的问题,在实际应用中需要多方面权衡利弊。
SSR优势
SSR缺点:
1.开发条件所限:浏览器特定的代码,只能在某些生命周期钩子函数 (lifecycle hook) 中使用;一些外部扩展库 (external library) 可能需要特殊处理,才能在服务器渲染应用程序中运行。无疑增加了项目的复杂性
2.涉及构建设置和部署的更多要求:与可以部署在任何静态文件服务器上的完全静态单页面应用程序 (SPA) 不同,服务器渲染应用程序,需要处于 Node.js server 运行环境
3.更多的服务器端负载:在 Node.js 中渲染完整的应用程序,显然会比仅仅提供静态文件的 server 更加大量占用 CPU 资源 (CPU-intensive - CPU 密集),因此如果你预料在高流量环境 (high traffic) 下使用,请准备相应的服务器负载,采用缓存策略等优化方案
实现过程:
- 配置服务器环境:需要在服务器端搭建Node.js环境,并安装相关依赖模块。可以使用Express或Koa等Web框架来简化开发。
- 创建服务器入口:创建一个服务器入口文件,通过监听HTTP请求并返回相应的HTML文本来实现SSR。可以在入口文件中使用渲染引擎(如EJS、Pug等)来处理HTML模板,并将数据传递给模板进行渲染。
- 配置路由:在服务器端配置路由,根据不同的请求路径返回相应的HTML文本。可以通过路由参数、查询字符串或POST请求等方式传递数据给服务器端进行处理。
- 客户端脚本:在HTML文本中插入客户端脚本,用于处理后续的页面交互和异步请求。
- SEO优化:为了优化SEO效果,需要在HTML文本中添加关键字、描述和标题等元数据,并且确保页面内容能够正常被搜索引擎抓取和解析。