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

React之服务端渲染ReactFizzServer

简介

Fizz是服务端渲染的重要组件

相关接口

functionstartWork(request:Request):voidfunctioncreateRequest(children:ReactNodeList,resumableState:ResumableState,renderState:RenderState,rootFormatContext:FormatContext,progressiveChunkSize:void|number,onError:void|((error:mixed,errorInfo:ErrorInfo)=>?string),onAllReady:void|(()=>void),onShellReady:void|(()=>void),onShellError:void|((error:mixed)=>void),onFatalError:void|((error:mixed)=>void),formState:void|null|ReactFormState<any,any>,):RequestfunctioncreatePrerenderRequest(children:ReactNodeList,resumableState:ResumableState,renderState:RenderState,rootFormatContext:FormatContext,progressiveChunkSize:void|number,onError:void|((error:mixed,errorInfo:ErrorInfo)=>?string),onAllReady:void|(()=>void),onShellReady:void|(()=>void),onShellError:void|((error:mixed)=>void),onFatalError:void|((error:mixed)=>void),):RequestfunctionresumeRequest(children:ReactNodeList,postponedState:PostponedState,renderState:RenderState,onError:void|((error:mixed,errorInfo:ErrorInfo)=>?string),onAllReady:void|(()=>void),onShellReady:void|(()=>void),onShellError:void|((error:mixed)=>void),onFatalError:void|((error:mixed)=>void),):RequestfunctionresumeAndPrerenderRequest(children:ReactNodeList,postponedState:PostponedState,renderState:RenderState,onError:void|((error:mixed,errorInfo:ErrorInfo)=>?string),onAllReady:void|(()=>void),onShellReady:void|(()=>void),onShellError:void|((error:mixed)=>void),onFatalError:void|((error:mixed)=>void),):RequestfunctionresolveRequest():null|RequestfunctionresolveClassComponentProps(Component:any,baseProps:Object,):ObjectfunctionperformWork(request:Request):voidfunctionprepareForStartFlowingIfBeforeAllReady(request:Request)functionstartFlowing(request:Request,destination:Destination):voidfunctionstopFlowing(request:Request):voidfunctionabort(request:Request,reason:mixed):voidfunctionflushResources(request:Request):voidfunctiongetFormState(request:Request,):ReactFormState<any,any>|nullfunctiongetResumableState(request:Request):ResumableStatefunctiongetRenderState(request:Request):RenderStatefunctiongetPostponedState(request:Request):null|PostponedState

运行时环境

支持下列环境

  • node:node.js环境
  • Edge:Cloudflare Workers / Vercel Edge / Deno
  • Bun:Bun
  • Browser:浏览器
  • FB:Meta 内部 www + FB RSC 通道

调度微任务是scheduleMicrotask
调度宏任务是scheduleWork

渲染成字符串renderToString

其完整流程如下:

  1. 创建Request:首先创建rootSegment,然后生成渲染任务RenderTask,并将其添加到Request请求的pingedTasks队列中。
  2. 启动工作:调用startWork函数,通过scheduleMicrotask调度performWork任务。在Node.js环境下,微任务调度使用queueMicrotask,宏任务调度则使用setImmediate
  3. 开启流式输出:执行startFlowing,将request.destination设置为非空值,允许flushCompletedQueues()将已完成的completed segments转换为字节流输出,并建立背压闭环机制。

RenderTask执行

渲染任务的结构关系如下:

Request

RenderTask

Node

Segment

Node:为需要渲染的dom节点

其执行步骤包括:

  • retryNode:重试节点处理,会区分节点类型,其支持的类型有
    • 对象,其支持的类型有
      • REACT_ELEMENT_TYPE
      • REACT_PORTAL_TYPE
      • REACT_LAZY_TYPE
      • 数组
      • 迭代函数
      • 异步迭代函数
      • 对象有then函数
      • REACT_CONTEXT_TYPE
    • 字符串
    • 数字
  • pushSegmentFinale:推送段结束标记
  • finishedSegment:完成段处理
  • finishedTask:完成整个任务
http://www.jsqmd.com/news/1351264/

相关文章:

  • 域见抚苏:唤醒 · 原力 · 生长 ——品牌愿景、使命与核心优势深度解读
  • 用数学建模优化时间管理:从算法思维到实践应用
  • OpenClaw最新版部署教学,TopClaw内置6万技能免配置
  • Unity安卓实时预览工具包:原理、部署与高效调试指南
  • 5分钟搞定Vuforia开发许可证:Unity AR开发环境配置全攻略
  • 个人关系管理工具Monica:从社交焦虑到关系资产的数字化管理
  • KVM虚拟化中qcow2镜像在线扩容技术详解
  • 一键关闭电脑屏幕小工具快速又方便
  • 电动车防盗器触发导致车轮抱死故障的诊断与应急维修指南
  • 问卷式前端别只会翻页:用状态机做好断点续答与幂等提交
  • VirtualBox虚拟机深度使用报告:十年老用户谈核心优势、实战技巧与性能调优
  • 电动汽车充电负荷预测的蒙特卡洛方法实践
  • 题解:瑞学堂 徐老师的二进制加法
  • AI编程新范式:阿里Qoder与GLM-5.1协同提升开发效率
  • 09 K 近邻算法入门:从距离理解分类
  • UE5网络同步:从Actor角色到RPC,构建多人游戏核心架构
  • 数据结构-环形链表
  • UE4.27.1 TCP/UDP插件避坑指南:从安装到实战,实现外部通信
  • Unity物体高亮插件QuickOutline:原理、集成与性能优化实战
  • P1564 膜拜【洛谷算法习题】
  • 2026年最新教程:视频号上传视频格式要求怎么转才不踩坑 - 图片处理研究员
  • OpenClaw实战:从零部署AI Agent框架,实现自然语言驱动应用开发
  • 6. 函数上
  • MOSFET结构、参数与驱动电路全解析:从硅基到GaN的开关艺术
  • LangChain / Integrations / Integrations by component / Tool
  • MSVC命令行编译C++程序:从环境配置到构建自动化
  • 数据治理 ROI(上):从成本中心到价值中心,先算清避损账
  • MIT算法导论学习指南:从复杂度分析到AI应用,构建算法思维体系
  • 物联网卡机卡分离无法复机?选对服务商比事后补救更重要
  • 虚实结合调试:基于汇川H5U与FactoryIO的PLC顺序控制实践