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在服务器端进行拼接。
客户端渲染存在的问题:
- 首屏等待时间长,用户体验差
- 页面结构为空,不利于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节点的开销。
相关文章:
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 v…...
如何系统地优化页面性能
页面优化,其实就是要让页面更快地显示和响应。由于一个页面在它不同的阶段,所侧重的关注点是不一样的,所以如果要讨论页面优化,就要分析一个页面生存周期的不同阶段。 通常一个页面有三个阶段:加载阶段、交互阶段和关…...
Vulnhub 渗透练习(八)—— THE ETHER: EVILSCIENCE
环境搭建 环境下载 靶机和攻击机网络适配都选 NAT 即可。 信息收集 主机扫描 两个端口,22 和 80,且 apache httpd 2.4.0~2.4.29 存在换行解析漏洞。 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中…...
华为OD机试题 - 水仙花数 2(JavaScript)| 代码+思路+重要知识点
最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - 整数分解(JavaScript) 华为OD机试题 - 单词反转(JavaScript) 使用说明 参加华为od机试,一定要注意不要完全背…...
字符设备驱动基础(二)
目录 一、五种IO模型------读写外设数据的方式 二、阻塞与非阻塞 三、多路复用 3.1 应用层:三套接口select、poll、epoll 3.2 驱动层:实现poll函数 四、信号驱动 4.1 应用层:信号注册fcntl 4.2 驱动层:实现fasync函数 一、…...
看见统计——第三章 概率分布
看见统计——第三章 概率分布 参考 https://github.com/seeingtheory/Seeing-Theory中心极限定理 概率分布描述了随机变量取值的规律。 随机变量Random Variables 🔥 定义:将样本空间中的结果映射到实数的函数 XXX 称为随机变量(random variable)&a…...
【基于众包标注的语文教材句子难易度评估研究 论文精读】
基于众包标注的语文教材句子难易度评估研究 论文精读信息摘 要0 引言1 相关研究2 众包标注方法3 语料库构建3.1 数据收集3.1 基于五点量表的专家标注3.3 基于成对比较的众包标注4 特征及模型4.1 特征抽取4.2 模型与实验设计4.2.1 任务一:单句绝对难度评估4.2.2 任务二:句对相对…...
实例五:MATLAB APP design-APP登录界面的设计
一、APP 界面设计展示 注:在账号和密码提示框输入相应的账号和密码后,点击登录按钮,即可跳转到程序中设计的工作界面。 二、APP设计界面运行结果展示...
作用域和闭包:
1、LHS和RHS查询编译一段代码,需要js引擎和编译器(js引擎负责整个程序运行时所需的各种资源的调度,编译器只是js引擎的一部分,负责将JavaScript源码编译成机器能识别的机器指令,然后交给引擎运行)编译的过程…...
Vue常见面试题?
1、说说你对SPA单页面的理解,它的优缺点是什么? SPA(single-page application)仅在Web页面初始化时加载相应的HTML、JavaScript和CSS。一旦页面加载完成,SPA不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机…...
前端借助Canvas实现压缩图片两种方法
一、具体代码 1、利用canvas压缩图片方法一 // 第一种压缩图片方法(图片base64,图片类型,压缩比例,回调函数)// 图片类型是指 image/png、image/jpeg、image/webp(仅Chrome支持)// 该方法对以上三种图片类型都适用 压缩结果的图片base64与原类型相同// …...
2023年美赛C题Wordle预测问题二建模及Python代码详细讲解
更新时间:2023-2-19 相关链接 (1)2023年美赛C题Wordle预测问题一建模及Python代码详细讲解 (2)2023年美赛C题Wordle预测问题二建模及Python代码详细讲解 (3)2023年美赛C题Wordle预测问题三、四…...
【算法】双指针
作者:指针不指南吗 专栏:算法篇 🐾或许会很慢,但是不可以停下来🐾 文章目录1.双指针分类2.双指针思想3.双指针应用1.双指针分类 常见问题分类 (1) 对于一个序列,用两个指针维护一段区间, 比如快速排序。 …...
Flutter-Widget-学习笔记
Widget 是整个视图描述的基础。 参考:https://docs.flutter.dev/resources/architectural-overview Widget 到底是什么呢? Widget 是 Flutter 功能的抽象描述,是视图的配置信息,同样也是数据的映射,是 Flutter 开发框…...
easyExcel 写复杂表头
写模板 模板图片: 实体类(这里没有用Data 是因为Lombok和easyExcal的版本冲突,在导入读取的时候获取不到值) package cn.iocoder.yudao.module.project.controller.admin.goods.vo;import com.alibaba.excel.annotation.ExcelI…...
关于线程池的执行流程和拒绝策略
使用线程池的好处为: 降低资源消耗:减少线程的创建和销毁带来的性能开销。 提高响应速度:当任务来时可以直接使用,不用等待线程创建 可管理性: 进行统一的分配,监控,避免大量的线程间因互相抢…...
【李忍考研传】二、约定
因为收学生证用了好些时间,李忍把学生证都交给班长后,就赶忙跑去食堂。远远地,他就看到那个瘦小的身影立在食堂正门前,那是他们约定每天午餐集合的地方。 “你咋这么慢啊……” “害!帮班长收东西耽误了点时间&#…...
2023-2-19 刷题情况
修改两个元素的最小分数 题目描述 给你一个下标从 0 开始的整数数组 nums 。 nums 的 最小 得分是满足 0 < i < j < nums.length 的 |nums[i] - nums[j]| 的最小值。nums的 最大 得分是满足 0 < i < j < nums.length 的 |nums[i] - nums[j]| 的最大值。nu…...
LeetCode笔记:Weekly Contest 333
LeetCode笔记:Weekly Contest 333 1. 题目一 1. 解题思路2. 代码实现 2. 题目二 1. 解题思路2. 代码实现 3. 题目三 1. 解题思路2. 代码实现 4. 题目四 比赛链接:https://leetcode.com/contest/weekly-contest-333 1. 题目一 给出题目一的试题链接如下…...
元数据管理 1
1、关于元数据管理原则说法正确的是 (知识点: 三月份模拟题)A.确保员工了解如何访问和使用元数据。B.制定、实施和审核元数据标准,以简化元数据的集成和使用。C.创建反馈机制,以便数据使用者可以将错误或过时的元数据反馈给元数据管理团队。D.以上都对正…...
LuaDec51终极指南:3步快速掌握Lua 5.1字节码反编译
LuaDec51终极指南:3步快速掌握Lua 5.1字节码反编译 【免费下载链接】luadec51 Lua Decompiler for Lua version 5.1 项目地址: https://gitcode.com/gh_mirrors/lu/luadec51 LuaDec51是一个强大的Lua 5.1字节码反编译工具,能够将编译后的Lua字节码…...
基于红外通信的实体寻宝游戏:从MakeCode到CircuitPython的嵌入式开发实践
1. 项目概述:用红外线玩一场实体寻宝游戏如果你手头有几块Adafruit的Circuit Playground Express开发板,除了点亮LED、播放声音这些基础操作,有没有想过用它们来设计一个能跑能藏的实体互动游戏?红外寻宝游戏就是一个绝佳的选择。…...
基于MCP协议的能源转型智能体:架构、实现与应用场景解析
1. 项目概述:能源转型智能体的“大脑”与“手脚”最近在做一个挺有意思的项目,核心是围绕一个叫apifyforge/energy-transition-intelligence-mcp的智能体展开的。这名字听起来有点拗口,拆开来看,“apifyforge”是发布者࿰…...
MVT矢量瓦片实战避坑指南:从配置到渲染的进阶解析
1. MVT矢量瓦片基础概念与核心优势 第一次接触MVT(Mapbox Vector Tile)矢量瓦片时,我和大多数开发者一样困惑:为什么不用传统的栅格瓦片?直到在某次地图项目中遇到动态样式调整需求时才恍然大悟。MVT本质上是将地理数据…...
STM32CubeMX配置避坑指南:搞定F103C8T6最小系统板的时钟与调试口
STM32CubeMX配置避坑指南:搞定F103C8T6最小系统板的时钟与调试口 当你第一次拿到STM32F103C8T6最小系统板时,CubeMX的图形化配置界面看起来是如此友好。但现实往往比理想骨感——代码下载后毫无反应、调试器连接失败、LED闪烁频率诡异。这些问题十有八九…...
Diablo Edit2:解放暗黑破坏神II角色定制的终极免费工具
Diablo Edit2:解放暗黑破坏神II角色定制的终极免费工具 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神II中无尽的刷怪升级感到疲惫吗?想要快速体验不同职…...
全国青少年信息素养大赛初赛(算法创意实践挑战赛C++初中组:样题带解析)
一、选择题 1、现有数组定义为 int array[5] {1};,数组 array 中的 元素分别是_____ A. 1 2 3 4 5 B. 0 0 0 0 1 C. 0 0 0 0 0 D. 1 0 0 0 0 答案:D 解析:int类型的数组中未赋值的元素,初始化赋值为0 2、在 C语言中&#…...
阿里HR面被问:“说下怎么设计一个招聘Agent”?”我愣了一下,从概念、核心模块和坑都娓娓道来,这波应该稳了
前些天一个研究生的师妹面了Agent岗位,最后一面。就是HR面,不过这个HR竟然问到了一个技术问题:“你可否介绍下如果你来设计一个招聘Agent,你会怎么做”。师妹当时还挺惊讶的,因为理论上这一论不会面技术的,…...
动漫分镜图批量生成实战:用/mj batch+自定义--style raw指令链,单日产出24张电影级分镜(附可复用Prompt矩阵表)
更多请点击: https://intelliparadigm.com 第一章:动漫分镜图批量生成的核心价值与技术边界 动漫分镜图(Storyboard)是动画制作前期的关键资产,传统手绘或半自动流程耗时长、风格不一致、迭代成本高。批量生成技术通…...
Godot 4动态网格切割:实现实时物理破坏效果
1. 项目概述与核心价值 最近在Godot社区里,一个名为 cloudofoz/godot-smashthemesh 的开源项目引起了我的注意。乍一看这个标题,可能会觉得有些抽象——“粉碎网格”?但当你深入了解后,会发现它精准地解决了一个在3D游戏开发&am…...
