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

React SSR

ReactDOMServer

参考链接:https://zh-hans.reactjs.org/docs/react-dom-server.html

ReactDOMServer 对象允许你将组件渲染成静态标记。通常,它被使用在 Node 服务端上

// ES modules
import * as ReactDOMServer from 'react-dom/server';
// CommonJS
var ReactDOMServer = require('react-dom/server');

React SSR 介绍

什么是客户端渲染

CSR:Client Side Rendering
服务器端仅返回JSON数据,Data和Html在客户端进行拼接。

什么是服务端渲染

SSR:Server Side Rendering
服务器端返回HTML,Data和Html在服务器端进行拼接。

客户端渲染存在的问题:

  1. 首屏等待时间长,用户体验差
  2. 页面结构为空,不利于SSO

客户端渲染首屏时间长的原因如下:
首先浏览器要求服务器端请求一个空的HTML,然后再去请求json数据,然后再进行HTML与json数据的组合,然后再渲染页面。而服务器渲染只需要浏览器去服务端请求一次带有内容的HTML,即可有完整的页面(虽然可能没有交互,因为还得请求js)

React SSR 同构

同构指的是代码复用,即实现客户端和服务器端最大程度的代码复用。


服务端渲染demo

在这里插入图片描述

1. 创建Node服务

在这里插入图片描述

2. 实现 React SSR

在这里插入图片描述

3. webpack 打包配置

问题:node环境不支持esmodule模块,不支持jsx语法

4. 客户端React添加事件

在服务端的React代码里添加事件是不生效的,因此需要在客户端进行二次渲染。

实现思路:在客户端对组件进行二次渲染,为组件元素添加事件。

在这里插入图片描述

总结:

SSR:

  • CSR相较SSR首屏时间长的原因。
  • 需要借助react-dom/server提供的renderToString()方法将React组件转换成字符串,方便服务端返回。
  • 需要进行代码同构,同构指的是代码复用,即实现客户端和服务器端最大程度的代码复用。
  • 服务端渲染对于事件不生效,需要借用ReactDom提供的hydrate在客户端进行二次渲染,hydrate方法在实现渲染的时候,会复用原本已经存在的DOM节点,减少重新生成节点以及删除原本DOM节点的开销。
http://www.lryc.cn/news/12771.html

相关文章:

  • 如何系统地优化页面性能
  • Vulnhub 渗透练习(八)—— THE ETHER: EVILSCIENCE
  • 华为OD机试题 - 水仙花数 2(JavaScript)| 代码+思路+重要知识点
  • 字符设备驱动基础(二)
  • 看见统计——第三章 概率分布
  • 【基于众包标注的语文教材句子难易度评估研究 论文精读】
  • 实例五:MATLAB APP design-APP登录界面的设计
  • 作用域和闭包:
  • Vue常见面试题?
  • 前端借助Canvas实现压缩图片两种方法
  • 2023年美赛C题Wordle预测问题二建模及Python代码详细讲解
  • 【算法】双指针
  • Flutter-Widget-学习笔记
  • easyExcel 写复杂表头
  • 关于线程池的执行流程和拒绝策略
  • 【李忍考研传】二、约定
  • 2023-2-19 刷题情况
  • LeetCode笔记:Weekly Contest 333
  • 元数据管理 1
  • 统计二进制中比特1的个数
  • 第三方实现跑马灯和手写实现跑马灯
  • React Native Cannot run program “node“问题
  • python基于vue微信小程序 房屋租赁出租系统
  • ThreadPoolExecutor管理异步线程笔记
  • MotoSimEG-VRC教程:动态输送带创建以及示教编程与仿真运行
  • PyTorch 并行训练 DistributedDataParallel完整代码示例
  • Golang实现ttl机制保存内存数据
  • js中数字运算结果与预期不一致的问题和解决方案
  • C++ Primer Plus 学习笔记(一)——基本类型
  • ChatGpt与Google 谁能给出最好的回答