Server Components
真实世界的应用往往是一部分都是“静态”的,而另一部分都是“动态”的,单一的解决方案覆盖不了大部分 Case
Server Components 的出现,在配合之前的 Client Components,可以达到纯 CSR 的动态性和纯 SSR 的静态内容快速渲染的效果(理想)
当然 hydration 这事没有 React 也能做,但是统一语言和生态应该算个(小)创新
- 将 Data-Fetching 这一阶段放在服务端去做
- 将非交互相关的第三方依赖放在服务端处理,减少客户端的 bundle size
- Server 端 React 返回的是一种 streaming protocol(描述 UI 的 Data),目的之一是渲染 Server Component 可以保留客户端组件的状态
- 服务端和客户端可以共享一些组件,延迟加载一些由用户决定的客户端交互功能
目前看起来还有很多点可以谈:
- 目前 Server Components 的 refetching 是全量的
- 路由集成,目前看起来是交给 Next.js 这样的 Framework 来做了,也可能利用 Context
- 打包这一阶段可以做的事,比如真的真的要以后缀区分不同端组件吗
- Server 和 Client 未来可以做共享受限状态
- 支持开箱即用的 SSG,这一点应该比较简单,Server Components 运行在服务端,配置服务端输出为 HTML
- Server 端限制在 Node(当然可以用 rust/等 重写这部分,但 Client 可能没办法直接复用)
- 预计未来可能会有很多围绕 Server Components 的 lib
- 真正世界,项目落地的成本
However,Server Components 概念上还是很有想象力的,可以开脑洞想一个落地的例子