干货 | React Server Components 初探

本文深入探讨了React Server Components,一种仅在服务端运行的React组件技术,旨在解决前端代码膨胀和优化问题。文章介绍了其基础概念、运行机制、流协议和与现有技术(如SSR、GraphQL)的关系,强调了其作为服务端优化的潜力和未来展望。
摘要由CSDN通过智能技术生成

作者简介

 

Sprite 82,喜欢研究各种语言对 web 框架的实现,函数式编程的爱好者,最近在编译原理前端中验证学习到的函数式编程知识。

随着前端职能在互联网公司的重要性与日俱增,我们的前端代码库的体积也开始跟着膨胀,特别是基于 React 的应用,Size 常常以兆 (Mb) 计,给渲染的性能优化提出了巨大的挑战。除了体积,还有另一个问题是,在当下的前端同构 SSR 实践中,Server 端的主要用途是执行一些在服务端和客户端都能执行的通用渲染计算,很少能充分发掘 Server 端特有能力的场景。如何降低客户端 JS Size 以及更极致地挖掘服务端的优化能力,成为一个待解决的开放性问题。

Facebook 的 React Team 尝试给出了他们的一个探索方案——React Server Component。一种只运行在服务端的 React 组件化能力,我们来一探究竟。


一、怎么开始


资源

Introducing Zero-Bundle-Size React Server Components

官方Blog里提供了三个关于 React Server Components 的资源:

1)一个可以运行的 full stack demo 项目。项目可以直接在本地运行,但是需要进行一些数据库配置。如果有docker环境的话,建议在docker里运行,可以避免手动配置环境。

2)RFC。React 团队 一直采用 RFC 的方式来帮助和指导 React 的设计。重大变更在经过社区彻底讨论后才会合并到 React 的稳定版本。

3)一个近一个小时的视频。解释了为什么要开发 React Server Components 和 对上述 demo项目的演示。有精心翻译的中文字幕。


说明

与 React team 的做法一样,这里也推荐大家先去看这个视频,先对 React Server Components 有个整体的认识。当然直接看本文也是可以的。

现在 React Server Components 仍处于开发状态。暂时不适合深入使用,也不适合基于这个新特性去开发升级自己的框架。


二、基础认识


组件类型

1)server component。不能包含客户端代码,如使用 DOM api、 useState、useEffect等。

2)client component。现在大家所熟悉的普通组件。

3)share component。既能作为 server component, 又能作为 client component,取决于引用该组件的组件。通常是根据 props 直接渲染的组件。


组件命名

1)server component:扩展名 .server.js

2)client component:扩展名 .client.js

3)sharing component:扩展名 .js

这个命名约定不是最终的方案,只是目前快速开发原型时的简易策略。


组件引用

三种组件之间相互引用只有一个限制:客户端组件不能 import 服务端组件。其余情况下,都可以相互引用。


三、运行机制


官方例子

上图展示的是官方提供的demo的侧边栏。包含 Header、SearchInput、NoteList 等组件。其中红色为服务端组件,绿色为客户端组件。

看到这里,大家可能会困惑,这种交错嵌套的组件是怎么在不同环境下渲染并且拼接到一起的。下面我们通过更简单的例子来解释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值