当前位置: 首页 > news >正文

前端渲染模式

 😉 记录学习,分享经验,持续成长


前端渲染模式

部署一个Web页面,都会面临如何渲染页面的选择:
- 应该在 浏览器端 运行代码(CSR)?
- 应该在 服务器端 进行渲染(SSR)?
- 或者在 构建阶段  预渲染页面(SSG或预渲染)?

 

1. CSR (客户端渲染, Client-Side Rendering)
🚀 流程
-浏览器请求 HTML(只包含``` <div id="app"></div> ```之类的占位符)。
-下载 JS 文件(前端代码很大,需要时间下载)。
-执行 JS,生成 DOM 结构(JS 解析和运行也需要时间)。
-渲染 UI(最后才让用户看到完整页面)。

优缺点
✅ 优点
- 效率高,一次加载后无需重复加载全部页面(基于单页面,不会出现多个.html 文件,index.html, home.html)
- 渲染逻辑由前端控制,开发进度快
- 系统具有更好的交互性

❌ 缺点
- 首屏加载比较慢(需要等待 JS 执行完成)
- 搜索引擎 SEO 不亲善,因为最初的 HTML 内容少

使用场景
- 需要很多动态交互的 SPA 应用
- 不重视 SEO,如互动网站、交流平台



2. SSR (服务器渲染, Server-Side Rendering)
- 在 服务器中渲染 HTML ,并将完整的 HTML 返回给浏览器
- 并非一次性生成全部页面,每次访问需要完整运行代码(动态生成 HTML,返回新的HTML 出现多个.html文件)

优缺点
✅ 优点
- 首屏加载快,没有 CSR 的等待 JS 执行渲染间隙
- 亲善 SEO ,因为每次访问都有完整的 HTML 为搜索引擎爬取

❌ 缺点
- 服务器消耗资源,每次请求都需要运行渲染
- 整体请求时间比 CSR 长

1)、服务器消耗资源,每次请求都需要运行渲染?

举个🌰:

在 SSR(服务器渲染)模式下,每当用户请求一个页面,服务器就需要执行 JavaScript 代码,
服务器再次返回一个 全新的 HTML,然后再返回给浏览器。

```
CSR(客户端渲染)是如何工作的?

🚀 只请求 & 更新需要的数据,而不是整个 HTML

1️⃣ 你访问 example.com/home

服务器只返回 一个 HTML 文件,并附带 JS 代码(Vue/React)。
这个 HTML 几乎是空的,主要靠 JS 运行后动态填充内容。

2️⃣ 你点击一个链接去 example.com/about

不会发起新的 HTML 请求!
Vue Router/React Router 拦截这个点击事件,用 JS 变更 URL。
前端代码 通过 fetch() 或 AJAX 获取 about 页面的数据。
只修改页面上的内容,而不刷新整个网页。

👉 特点:页面跳转时,不重新请求整个 HTML,只更新部分数据和 DOM。

```

2)、整体请求时间比 CSR 长?

举个🌰:
SSR 的首屏渲染比 CSR 快(因为服务器已经帮忙生成 HTML)
SSR 的整体请求时间比 CSR 长(因为服务器需要计算 HTML)

使用场景
- 重视 SEO 的网站(毕业业企、文章类网站)
- 首屏加载速度要求高

 

3. SSG (静态站点生成, Static Site Generation)

- 在 构建阶段 下预先生成好 HTML 文件
- 部署后,直接返回静态 HTML ,没有需要加载的渲染逻辑

优缺点
✅ 优点
- 构建好后页面加载极快(CDN 直接处理 HTML)
- 系统繁忙度低,不需要在服务器计算

❌ 缺点
- 不适合动态数据更新频繁的场景

使用场景
- 内容基本固定、不常变化的网站
- 博客
- 文档网站(VuePress、Docusaurus)
- 企业官网

  

4、预渲染

介于 CSR 和 SSG 之间。

使用工具(如 Puppeteer)在构建时执行 JavaScript 并生成 HTML 文件。

适用于 前端框架(Vue/React)但又需要 SEO。

优缺点

✅ 优点

-SEO 友好(预渲染出的 HTML 适合爬虫)。
-不影响前端框架的开发体验。

❌ 缺点

- 构建时间长,对于大规模站点可能不适用。
- 无法处理动态内容(例如个性化数据)。

使用场景

- 适用于 爬虫可见,但用户交互复杂 的页面
- 营销类网站(Landing Page)
- 部分内容动态但 SEO 重要的网站

 

 
 
 
 
 
http://www.sczhlp.com/news/13438/

相关文章:

  • zephyr学习: 4.LVGL+LCD显示触摸
  • CSP-S模拟12——类人群星闪耀时
  • pytorch一维向量shape转换
  • HZ CSP-S模拟12
  • windows Server 2019域控管理员密码重置
  • 在K8S中,Secret有何作用?
  • 使用影刀RPA实现快递信息抓取
  • 04_根据不同的值选择不同的执行语句
  • abc419
  • 0103_开闭原则
  • 在K8S中,Secret有哪些使用方式?
  • 2025.8.16打卡
  • AtCoder-Beginner-Contest-419
  • abc419 G Count Simple Paths 2 题解
  • 2025 暑期模拟赛题目选记
  • pytorch查询变量类型(字节数)
  • 第五周假期进度报告(8.10 - 8.16)
  • 对百度千帆AI大模型的认识
  • BZOJ杂题选记(8.11-8.16)
  • 在AI技术快速落地的时代,挖掘机器人控制的新需求成为关键——某知名人形机器人敏捷控制框架需求分析
  • 给水系统设计是建筑或工业项目中的一个重要部分,涉及到水源的获取、分配、使用以及废水的处理。对于初学者来说,了解整个设计流程和相关的基本知识是非常必要的。以下是一个简化的大纲,可以帮助你入门:
  • 串口调试经验杂谈
  • 2025.8.15 CSP-S模拟赛35
  • USB转TTL模块无法被PC识别问题解决
  • 初级排水系统设计主要关注基本的排水需求和系统稳定性,适用于一般居民区、商用区和小规模工业区的项目。设计方案强调排水能力的合理配置、经济性、可维护性和基础设施的环保要求。
  • MyBatis相关面试题
  • 2025.8.16总结 - A
  • 学习了
  • 代码随想录算法训练营第九天(栈与队列篇)|Leetcode232用栈实现队列,Leetcode225用队列实现栈,Leetcode20有效的括号,Leetcode1047删除字符串中的所有相邻重复项
  • 浅谈 - 百度千帆 AI 大模型