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

14.JS学习篇-CSR和SSR

在前端开发中,CSR(Client-Side Rendering,客户端渲染)和 SSR(Server-Side Rendering,服务端渲染)是两种不同的渲染方式。

一、CSR(客户端渲染)

1.工作原理
  • 浏览器首先下载一个 HTML 页面,这个页面通常只包含基本的 HTML 结构和一些加载 JavaScript 脚本的标签。
  • 当页面加载完成后,JavaScript 脚本开始运行,从服务器获取数据(通常通过 API 请求)。
  • 然后,JavaScript 框架(如 React、Vue.js 等)使用获取到的数据在客户端生成页面的最终内容,并将其插入到 HTML 页面中进行展示。
2.优点
  • 更好的用户体验:页面可以在加载初始 HTML 后快速显示一些基本内容,然后随着 JavaScript 的加载和数据的获取逐渐变得更加丰富和交互性强。
  • 分离关注点:前端和后端可以独立开发,开发效率较高。
  • 易于部署:只需要部署静态资源和后端 API,相对简单。
3.缺点
  • SEO 不友好:搜索引擎爬虫在抓取页面时,可能无法执行 JavaScript,因此无法看到完整的页面内容,这会影响网站在搜索引擎中的排名。
  • 首次加载时间较长:因为需要下载大量的 JavaScript 代码和数据,导致首次加载页面的时间较长。

以下是一些支持前端开发中 CSR(客户端渲染)的框架:React,Vue,Angular

二、SSR(服务端渲染)

1.工作原理
  • 当用户请求一个页面时,服务器接收到请求后,在服务器端运行前端框架,生成完整的 HTML 页面。
  • 服务器将生成的 HTML 页面发送给浏览器,浏览器直接显示这个页面,无需等待 JavaScript 加载和数据获取。
2.优点
  • SEO 友好:搜索引擎爬虫可以直接看到完整的页面内容,有利于提高网站在搜索引擎中的排名。
  • 更快的首次加载时间:因为服务器已经生成了完整的页面,浏览器无需等待 JavaScript 加载和数据获取,所以首次加载时间较短。
3.缺点
  • 服务器压力较大:服务器需要为每个请求生成完整的 HTML 页面,这会增加服务器的负载。
  • 开发复杂度较高:需要同时考虑前端和后端的开发,并且需要处理服务器端和客户端的状态管理等问题。

开发过程中,如果注重用户体验和开发效率,可以选择 CSR;如果注重 SEO 和首次加载时间,可以选择 SSR。也可以考虑采用混合渲染的方式,结合两者的优点,以达到更好的效果。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • golang并发编程——概述
  • sql中exist和in的区别
  • 240828-Gradio结合Html+Css+Javascript制作年历
  • Open3D编译安装
  • 同人小游戏之斗罗大陆3
  • 【STM32】IIC
  • es集群详解
  • IDEA导入第三方jar包, 并在Maven中打包该jar包
  • 医疗数字化转型数据中台架构方案(一)
  • vim 简易配置
  • 【视频讲解】SMOTEBoost、RBBoost和RUSBoost不平衡数据集的集成分类酵母数据集、治癌候选药物|数据分享...
  • 【奇某信-注册/登录安全分析报告】
  • 哪些领域最适合采用音视频私有化解决方案?
  • Python 数据分析笔记— Numpy 基本操作
  • 公司新招了个字节拿36K的人,让我见识到了什么才是测试扛把子......
  • [译] 怎样写一个基础的编译器
  • python大佬养成计划----difflib模块
  • spring-boot List转Page
  • VUE es6技巧写法(持续更新中~~~)
  • windows下如何用phpstorm同步测试服务器
  • 构建二叉树进行数值数组的去重及优化
  • 机器学习中为什么要做归一化normalization
  • 配置 PM2 实现代码自动发布
  • 前端技术周刊 2019-01-14:客户端存储
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 入口文件开始,分析Vue源码实现
  • 删除表内多余的重复数据
  • 深入 Nginx 之配置篇
  • 由插件封装引出的一丢丢思考
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ‌JavaScript 数据类型转换
  • #include到底该写在哪
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (3)llvm ir转换过程
  • (6)STL算法之转换
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (function(){})()的分步解析
  • (LeetCode C++)盛最多水的容器
  • (web自动化测试+python)1
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .net core 6 集成和使用 mongodb
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .Net 执行Linux下多行shell命令方法
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net连接oracle数据库