MST

星途 面试题库

面试题:Vue SSR的预渲染和服务端渲染的区别及应用场景

请详细阐述Vue预渲染和服务端渲染各自的原理、优缺点,以及在不同业务场景(如电商产品页、社交动态页等)下,应如何选择使用预渲染还是服务端渲染。
44.8万 热度难度
前端开发Vue

知识考点

AI 面试

面试题答案

一键面试

Vue预渲染原理

  • 预渲染是在构建阶段,借助工具(如prerender-spa-plugin)将指定路由页面渲染为静态HTML文件。在构建过程中,通过模拟浏览器环境,将Vue组件渲染成最终的HTML字符串,并生成对应的静态文件。这些静态文件可以直接被服务器发送给客户端,无需在客户端进行额外的渲染,加快了页面的首次加载速度。

Vue预渲染优点

  • 加载速度快:直接提供静态HTML,无需等待客户端JavaScript加载和渲染,大大提升首次加载性能,特别是对网络条件较差或设备性能较弱的用户友好。
  • 实现简单:相对于服务端渲染,预渲染在构建过程中完成渲染,不需要搭建复杂的服务器环境,对技术栈和部署要求较低。
  • SEO友好:搜索引擎爬虫可以直接获取到完整的HTML内容,有利于页面在搜索引擎中的收录和排名。

Vue预渲染缺点

  • 数据更新不及时:预渲染生成的是静态HTML,数据不会实时更新。如果数据频繁变动,需要重新构建预渲染才能更新内容,不适用于数据实时性要求高的场景。
  • 灵活性受限:由于是静态渲染,交互性相对较差,对于复杂交互场景,需要额外的JavaScript代码来增强交互,但这可能会影响预渲染带来的性能优势。

Vue服务端渲染原理

  • 服务端渲染(SSR)是在服务器端将Vue应用渲染为HTML字符串,然后将这个HTML发送到客户端。服务器接收到请求后,创建Vue实例,根据请求的路由和数据,在服务器端执行Vue组件的生命周期钩子函数,完成数据获取和组件渲染,生成完整的HTML。客户端接收到HTML后,通过“激活”过程,将静态HTML转变为可交互的Vue应用,即重新绑定事件监听器等。

Vue服务端渲染优点

  • SEO友好:同预渲染一样,服务器返回给客户端的是完整的HTML内容,搜索引擎爬虫能直接抓取到页面内容,有利于优化SEO。
  • 实时性强:可以根据每个请求动态生成HTML,对于实时性要求高的数据,能够及时获取并渲染到页面上,满足如社交动态页等场景对数据实时性的需求。
  • 首屏加载快:相比客户端渲染(CSR),服务端渲染可以更快地将页面的基本结构呈现给用户,减少用户等待时间,特别是对于内容较多、JavaScript代码较大的应用效果更明显。

Vue服务端渲染缺点

  • 服务器负载高:每个请求都需要在服务器端进行Vue应用的渲染,增加了服务器的计算资源消耗,对服务器性能要求较高,可能需要更多的服务器资源来支撑高并发请求。
  • 开发部署复杂:需要搭建服务器环境,处理服务器与客户端之间的状态管理、路由等问题,开发和维护成本相对较高。例如,需要注意服务器端和客户端代码的兼容性,处理同构代码等。

业务场景选择

电商产品页

  • 预渲染:如果电商产品页的内容相对固定,产品信息更新频率较低,如一些长期不变的产品介绍、规格说明等,预渲染是较好的选择。它可以快速提供页面内容,提升用户体验,同时简单的实现方式也降低了开发成本,并且对SEO友好,有利于产品页面在搜索引擎中被发现。
  • 服务端渲染:若电商产品页需要实时显示库存、价格波动等动态数据,服务端渲染更为合适。它能够根据用户请求实时获取最新数据并渲染到页面,确保用户看到的信息是准确且最新的。但要注意合理配置服务器资源,以应对可能的高并发请求。

社交动态页

  • 预渲染:不太适合社交动态页。因为社交动态数据实时性强,预渲染无法及时更新内容,用户可能看到过时的动态信息,影响用户体验。
  • 服务端渲染:适合社交动态页。可以在用户请求时,从数据库中获取最新的动态数据并渲染到页面,保证用户看到的是最新的社交动态。虽然增加了服务器负载,但能满足社交场景对数据实时性的严格要求,提升用户对应用的满意度。