3 min read

Server Components

如何看待 React Server Components? - Nan Yang 的回答 - 知乎

真实世界的应用往往是一部分都是“静态”的,而另一部分都是“动态”的,单一的解决方案覆盖不了大部分 Case

Server Components 的出现,在配合之前的 Client Components,可以达到纯 CSR 的动态性和纯 SSR 的静态内容快速渲染的效果(理想)

当然 hydration 这事没有 React 也能做,但是统一语言和生态应该算个(小)创新

  1. 将 Data-Fetching 这一阶段放在服务端去做
  2. 将非交互相关的第三方依赖放在服务端处理,减少客户端的 bundle size
  3. Server 端 React 返回的是一种 streaming protocol(描述 UI 的 Data),目的之一是渲染 Server Component 可以保留客户端组件的状态
  4. 服务端和客户端可以共享一些组件,延迟加载一些由用户决定的客户端交互功能

目前看起来还有很多点可以谈:

  1. 目前 Server Components 的 refetching 是全量的
  2. 路由集成,目前看起来是交给 Next.js 这样的 Framework 来做了,也可能利用 Context
  3. 打包这一阶段可以做的事,比如真的真的要以后缀区分不同端组件吗
  4. Server 和 Client 未来可以做共享受限状态
  5. 支持开箱即用的 SSG,这一点应该比较简单,Server Components 运行在服务端,配置服务端输出为 HTML
  6. Server 端限制在 Node(当然可以用 rust/等 重写这部分,但 Client 可能没办法直接复用)
  7. 预计未来可能会有很多围绕 Server Components 的 lib
  8. 真正世界,项目落地的成本

However,Server Components 概念上还是很有想象力的,可以开脑洞想一个落地的例子