登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
Gitee 2025 年度开源项目评选中
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
3
Star
45
Fork
21
DreamCoders
/
CoderGuide
代码
Issues
1169
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
对React SSR的理解
待办的
#IAGAQH
陌生人
拥有者
创建于
2024-07-29 16:23
<p style="text-align: start;">服务端渲染是数据与模版组成的html,即 HTML = 数据 + 模版。将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序。页面没使用服务渲染,当请求页面时,返回的body里为空,之后执行js将html结构注入到body里,结合css显示出来;</p><p style="text-align: start;"><strong>SSR的优势:</strong></p><ul><li style="text-align: start;">对SEO友好</li><li style="text-align: start;">所有的模版、图片等资源都存在服务器端</li><li style="text-align: start;">一个html返回所有数据</li><li style="text-align: start;">减少HTTP请求</li><li style="text-align: start;">响应快、用户体验好、首屏渲染快</li></ul><p style="text-align: start;"><strong>1)更利于SEO</strong> 不同爬虫工作原理类似,只会爬取源码,不会执行网站的任何脚本使用了React或者其它MVVM框架之后,页面大多数DOM元素都是在客户端根据js动态生成,可供爬虫抓取分析的内容大大减少。另外,浏览器爬虫不会等待我们的数据完成之后再去抓取页面数据。服务端渲染返回给客户端的是已经获取了异步数据并执行JavaScript脚本的最终HTML,网络爬中就可以抓取到完整页面的信息</p><p style="text-align: start;"><strong>2)更利于首屏渲染</strong> 首屏的渲染是node发送过来的html字符串,并不依赖于js文件了,这就会使用户更快的看到页面的内容。尤其是针对大型单页应用,打包后文件体积比较大,普通客户端渲染加载所有所需文件时间较长,首页就会有一个很长的白屏等待时间。</p><p style="text-align: start;"><strong>SSR的局限:</strong></p><p style="text-align: start;"><strong>1)服务端压力较大</strong> 本来是通过客户端完成渲染,现在统一到服务端node服务去做。尤其是高并发访问的情况,会大量占用服务端CPU资源;</p><p style="text-align: start;"><strong>2)开发条件受限</strong> 在服务端渲染中,只会执行到componentDidMount之前的生命周期钩子,因此项目引用的第三方的库也不可用其它生命周期钩子,这对引用库的选择产生了很大的限制;</p><p style="text-align: start;"><strong>3)学习成本相对较高</strong> 除了对webpack、MVVM框架要熟悉,还需要掌握node、 Koa2等相关技术。相对于客户端渲染,项目构建、部署过程更加复杂。</p><p style="text-align: start;"><strong>时间耗时比较:</strong></p><p style="text-align: start;"><strong>1)数据请求</strong> 由服务端请求首屏数据,而不是客户端请求首屏数据,这是"快"的一个主要原因。服务端在内网进行请求,数据响应速度快。客户端在不同网络环境进行数据请求,且外网http请求开销大,导致时间差</p><ul><li style="text-align: start;">客户端数据请求</li><li style="text-align: start;"></li><li style="text-align: start;"><img src="https://pic4.zhimg.com/80/v2-5b6f76a5b43f5b6db720e4465a5786b7_720w.webp" alt="" data-href="" style="width: 690px;height: auto;"></li><li style="text-align: start;">服务端数据请求</li><li style="text-align: start;"></li><li style="text-align: start;"><img src="https://pic4.zhimg.com/80/v2-e8e6e1bec5dc2004719d9a91449fd7af_720w.webp" alt="" data-href="" style="width: 690px;height: auto;"></li></ul><p style="text-align: start;"><strong>html渲染</strong> 服务端渲染是先向后端服务器请求数据,然后生成完整首屏 html返回给浏览器;而客户端渲染是等js代码下载、加载、解析完成后再请求数据渲染,等待的过程页面是什么都没有的,就是用户看到的白屏。就是服务端渲染不需要等待js代码下载完成并请求数据,就可以返回一个已有完整数据的首屏页面。</p><ul><li style="text-align: start;">非ssr html渲染</li><li style="text-align: start;"></li><li style="text-align: start;"><img src="https://pic2.zhimg.com/80/v2-84906a4a0ce0aac8cee50f989c3ffc81_720w.webp" alt="" data-href="" style="width: 690px;height: auto;"></li><li style="text-align: start;">ssr html渲染</li><li style="text-align: start;"></li><li style="text-align: start;"><img src="https://pic2.zhimg.com/80/v2-1afa300b3717cdaa1dca080712ac69d5_720w.webp" alt="" data-href="" style="width: 690px;height: auto;"></li></ul>
<p style="text-align: start;">服务端渲染是数据与模版组成的html,即 HTML = 数据 + 模版。将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序。页面没使用服务渲染,当请求页面时,返回的body里为空,之后执行js将html结构注入到body里,结合css显示出来;</p><p style="text-align: start;"><strong>SSR的优势:</strong></p><ul><li style="text-align: start;">对SEO友好</li><li style="text-align: start;">所有的模版、图片等资源都存在服务器端</li><li style="text-align: start;">一个html返回所有数据</li><li style="text-align: start;">减少HTTP请求</li><li style="text-align: start;">响应快、用户体验好、首屏渲染快</li></ul><p style="text-align: start;"><strong>1)更利于SEO</strong> 不同爬虫工作原理类似,只会爬取源码,不会执行网站的任何脚本使用了React或者其它MVVM框架之后,页面大多数DOM元素都是在客户端根据js动态生成,可供爬虫抓取分析的内容大大减少。另外,浏览器爬虫不会等待我们的数据完成之后再去抓取页面数据。服务端渲染返回给客户端的是已经获取了异步数据并执行JavaScript脚本的最终HTML,网络爬中就可以抓取到完整页面的信息</p><p style="text-align: start;"><strong>2)更利于首屏渲染</strong> 首屏的渲染是node发送过来的html字符串,并不依赖于js文件了,这就会使用户更快的看到页面的内容。尤其是针对大型单页应用,打包后文件体积比较大,普通客户端渲染加载所有所需文件时间较长,首页就会有一个很长的白屏等待时间。</p><p style="text-align: start;"><strong>SSR的局限:</strong></p><p style="text-align: start;"><strong>1)服务端压力较大</strong> 本来是通过客户端完成渲染,现在统一到服务端node服务去做。尤其是高并发访问的情况,会大量占用服务端CPU资源;</p><p style="text-align: start;"><strong>2)开发条件受限</strong> 在服务端渲染中,只会执行到componentDidMount之前的生命周期钩子,因此项目引用的第三方的库也不可用其它生命周期钩子,这对引用库的选择产生了很大的限制;</p><p style="text-align: start;"><strong>3)学习成本相对较高</strong> 除了对webpack、MVVM框架要熟悉,还需要掌握node、 Koa2等相关技术。相对于客户端渲染,项目构建、部署过程更加复杂。</p><p style="text-align: start;"><strong>时间耗时比较:</strong></p><p style="text-align: start;"><strong>1)数据请求</strong> 由服务端请求首屏数据,而不是客户端请求首屏数据,这是"快"的一个主要原因。服务端在内网进行请求,数据响应速度快。客户端在不同网络环境进行数据请求,且外网http请求开销大,导致时间差</p><ul><li style="text-align: start;">客户端数据请求</li><li style="text-align: start;"></li><li style="text-align: start;"><img src="https://pic4.zhimg.com/80/v2-5b6f76a5b43f5b6db720e4465a5786b7_720w.webp" alt="" data-href="" style="width: 690px;height: auto;"></li><li style="text-align: start;">服务端数据请求</li><li style="text-align: start;"></li><li style="text-align: start;"><img src="https://pic4.zhimg.com/80/v2-e8e6e1bec5dc2004719d9a91449fd7af_720w.webp" alt="" data-href="" style="width: 690px;height: auto;"></li></ul><p style="text-align: start;"><strong>html渲染</strong> 服务端渲染是先向后端服务器请求数据,然后生成完整首屏 html返回给浏览器;而客户端渲染是等js代码下载、加载、解析完成后再请求数据渲染,等待的过程页面是什么都没有的,就是用户看到的白屏。就是服务端渲染不需要等待js代码下载完成并请求数据,就可以返回一个已有完整数据的首屏页面。</p><ul><li style="text-align: start;">非ssr html渲染</li><li style="text-align: start;"></li><li style="text-align: start;"><img src="https://pic2.zhimg.com/80/v2-84906a4a0ce0aac8cee50f989c3ffc81_720w.webp" alt="" data-href="" style="width: 690px;height: auto;"></li><li style="text-align: start;">ssr html渲染</li><li style="text-align: start;"></li><li style="text-align: start;"><img src="https://pic2.zhimg.com/80/v2-1afa300b3717cdaa1dca080712ac69d5_720w.webp" alt="" data-href="" style="width: 690px;height: auto;"></li></ul>
评论 (
0
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
React
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
未关联
master
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
1
https://gitee.com/DreamCoders/CoderGuide.git
git@gitee.com:DreamCoders/CoderGuide.git
DreamCoders
CoderGuide
CoderGuide
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册