《家庭财务宝典》

一文搞懂:什么是SSR、SSG、CSR?前端渲染技术全解析

4次阅读

共计 2769 个字符,预计需要花费 7 分钟才能阅读完成。

一文搞懂:什么是SSR、SSG、CSR?前端渲染技术全解析插图

在前端开发的世界里,我们经常遇到 SSR(服务器端渲染)、SSG(静态站点生成)和 CSR(客户端渲染)这三种渲染技术。它们各自有着独特的优缺点,适用于不同的场景和需求。下面,我们将详细介绍这三种技术,并通过代码示例来加深理解。

一、CSR(客户端渲染)

介绍:

CSR(Client-Side Rendering)是前端开发中最常见的渲染方式。在这种模式下,服务器主要负责提供静态的 HTML 文件(可能包含一些基本的 HTML 结构和 JavaScript 脚本),而真正的页面渲染工作则完全由客户端的浏览器来完成。这意味着页面内容是在用户的浏览器上动态生成的。

优点:

  1. 响应速度快:一旦 HTML 文件加载完成,浏览器就可以开始渲染页面,而不需要等待服务器返回完整的渲染结果。
  2. 动态性强:由于页面渲染在客户端进行,因此可以方便地实现各种动态交互效果。
  3. 前端部署简单:只需要一个静态服务即可部署前端代码,降低了部署成本。

缺点:

  1. 首屏加载时间长:由于需要加载整个 JavaScript 包,可能导致首屏加载时间较长,特别是对于复杂的单页应用(SPA)。
  2. 不利于 SEO:搜索引擎爬虫可能无法很好地解析由 JavaScript 动态生成的页面内容,导致 SEO 效果较差。
  3. 白屏时间:在 JavaScript 代码加载和执行期间,用户可能会看到空白的页面,即所谓的“白屏时间”。

示例(使用 React):

// 假设有一个 React 组件

import React from 'react';

function MyComponent() {const [message, setMessage] = React.useState('Hello, CSR!');

const handleClick = () => {setMessage('Clicked!');

};

return ({message}

Click Me

);

}

// 在 HTML 文件中引入 React 和组件的 JavaScript 文件

// 浏览器加载并执行这些 JavaScript,从而渲染页面

二、SSR(服务器端渲染)

介绍:

SSR(Server-Side Rendering)是一种在服务器端完成页面渲染的技术。在这种模式下,服务器接收到客户端的请求后,会先根据请求数据和模板文件生成完整的 HTML 页面,然后将这个页面直接发送给客户端。这样,用户可以直接看到完成的内容,无需等待 JavaScript 加载和执行。

优点:

  1. 首屏加载速度快:由于服务器已经生成了完整的 HTML 页面,因此客户端可以直接显示这个页面,无需等待 JavaScript 加载和执行。
  2. SEO 友好:搜索引擎爬虫可以很好地解析由服务器生成的 HTML 页面内容,有利于 SEO 优化。
  3. 适合复杂页面:对于包含大量数据、需要复杂计算的页面,SSR 可以更好地处理并减少客户端的负载。

缺点:

  1. 服务器压力大:对于每个请求,服务器都需要重新渲染页面,这可能导致服务器压力过大。
  2. 开发限制:SSR 要求开发者在编写 Vue 组件时,需要考虑到服务器端和客户端环境的差异,不能过度依赖客户端环境。
  3. 调试困难:SSR 的调试过程相对复杂,需要同时考虑到服务器端和客户端的日志和错误信息。

示例(使用 React 的服务器端渲染):

// 服务器端代码(Node.js)

const React = require('react');

const ReactDOMServer = require('react-dom/server');

const MyComponent = require('./MyComponent').default; // 假设 MyComponent 是上面定义的 React 组件

// 渲染组件为 HTML 字符串

const html = ReactDOMServer.renderToString();

// 将 HTML 字符串发送给客户端

// ...(这里省略了 HTTP 服务器和响应发送的代码)

三、SSG(静态站点生成)

介绍:

SSG(Static Site Generation)是一种在构建时生成静态 HTML 页面的技术。在这种模式下,开发者会编写一些模板文件和数据文件,然后使用构建工具 (如 Hugo、Gatsby 等) 将这些文件转换为静态的 HTML 页面。这些页面可以直接部署到服务器上,而不需要服务器进行实时渲染。

优点:

  1. 性能卓越:由于页面是静态的,因此无需等待服务器渲染,直接由浏览器加载显示,具有出色的性能。
  2. 安全性高:由于服务器只提供静态文件,因此降低了遭受攻击的风险。
  3. 适合内容型网站:对于内容更新不频繁的内容型网站(如博客、文档网站等),SSG 是一个很好的选择。

缺点:

  1. 动态性受限:由于页面是静态的,因此难以实现复杂的动态交互效果。
  2. 构建时间长:对于大型站点,构建时间可能会比较长。
  3. 不适合频繁更新:对于需要频繁更新数据的网站,SSG 可能不太适合,因为每次更新都需要重新构建并部署整个网站。

示例(使用 Nunjucks 模板引擎):

模板文件(index.njk):

<!DOCTYPE html>
<html>
<head>
  <title>My Static Site</title>
</head>
<body>
  <h1>{{message}}</h1>
</body>
</html>

构建脚本(Node.js):

const nunjucks = require('nunjucks');
const fs = require('fs');

// 配置 Nunjucks 模板引擎
nunjucks.configure('views', { autoescape: true});

// 渲染模板
const res = nunjucks.render('index.njk', { message: 'Hello, SSG!'});

// 将渲染结果写入 HTML 文件
fs.writeFileSync('dist/index.html', res);

// 现在你可以将生成的 `dist/index.html` 部署到服务器上

总结

CSR、SSR 和 SSG 各有优缺点,适用于不同的场景和需求。在选择使用哪种技术时,需要根据项目的具体需求来权衡利弊。

例如,

  • 对于需要丰富交互效果和实时数据的场景,可以选择 CSR;
  • 对于需要优化首屏加载速度和 SEO 效果的场景,可以选择 SSR;
  • 而对于内容更新不频繁、对性能要求高的场景,可以选择 SSG。
  • 同时,也可以结合使用多种技术来实现更好的用户体验和性能优化。

你的工作,由 AI 赋能!🔥

还在为文案、脚本卡壳、做视频、写代码、设计图片灵感枯竭而烦恼吗?🤯

板板 AI,你的工作好帮手!

一键生成    各种文案、脚本、图片、视频、代码、报告,轻松应对各种工作 / 营销需求!

现在注册体验,即可获得:

  • 🎁 30 积分基础模型余额
  • 🎁 3 积分高级模型余额
  • 🎁 3 积分绘画余额

还不快来试试?

点击链接,开启你的 AI 创作之旅!>>>https://www.banbanai.cn

板板 AI,让你的工作效果发挥无限可能! 🚀

正文完
关注板板AI免费获得移动AI助手
post-qrcode
 
天天
版权声明:本站原创文章,由 天天 2024-11-13发表,共计2769字。
转载说明:

本文由 天天资讯网 整理发布,转载请注明出处.
版权声明:部分文章内容或图片来源于网络,我们尊重作者的知识产权。如有侵犯,请联系我们在第一时间删除。

文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月
文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月
文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月
文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月
文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月

温馨提示:请在上面搜索| 查找更多免费资源,如需广告位请联系站长QQ 48704478

《家庭财务宝典》