前言2020 年底,React 公布了一个全新的特性:Server Components,当时它还处于调研和试验阶段,并没有正式发布,随着 React 18.0 版本的正式发布,Server Component 的脚步声也越来越近了,不出意外的话,应该会在今年的某个 React 18 的 minor 版本中正式发布 。
Server Components 听起来好像并不那么激动人心,React 18 所发布的各种特性也似乎平平无奇,自从 Hooks 面世已经三年多过去了,React 似乎停滞了前进的脚步,只是在现有的基础上做些小修小补?
No 。
Concurrent rendering(React 18 新带来的特性)是一种本质上的改变,它本身不像 Hooks 那样对开发体验有着近乎翻天覆地的变革,但是这种底层渲染能力/机制的调整,会带来非常非常多的可能性,例如:
Suspense、OffScreen、Server Components
这三种特性,目前都没有生产可用,但是等到未来他们正式发布并渐渐被大面积使用时,每一项特性都会带来非常显著的开发体验的提升 。而如果让我从这些未来会出现的新特性中选一个最期待的,那毫不疑问会是 Server Component 。
所以,Server Components 到底是什么?他会像当年的 Hooks 一样对整个 React 生态带来巨大的影响么?在我们回答这些问题之前,很有必要先解释一下 Server Components 是什么,又解决了什么问题 。
注:下文中的很多内容受 Dan 和 Lauren 的这份 演讲视频 [1] 所启发,如果你想更深入的了解即将到来的 React Server Component,那么非常推荐这段视频 事实上,这篇文章并不是一份对 Server Components 的用法教学,也不会涵盖 Server Components 的每一处细节(甚至为了方便表述会有意地略过一些细节),因此,在读下文之前,最好是对 Server Components 已经有所了解
背景:前后端分离“前后端分离”是当下主流的 web 研发模式,后端存储数据,并把对数据的操作(增删改查)封装成接口,通过后端服务提供给前端,前端应用发送请求(例如 http 请求或者 rpc 请求)去调用后端提供的接口,从而获取到数据或者是对数据进行修改 。
文章插图
这可能是十几年以来非常普遍的研发模式了,也因此,我们被区分成前端开发和后端开发,各自负责着“楚河汉界”的一侧 。我们在各自那一侧都做了非常多的优化、创新、突破,在后端,我们有容器化、微服务、SSR,在前端,我们有 code spliting、前端路由、React Hooks 。
但是对于 API 层,我们似乎这么多年以来都未曾有过关注,即便是有,也仅仅是停留于 API 传输性能(例如 grpc)、API 的存在形式(例如 Restful 和 GraphQL)、API 的工程化管理(例如 Postman) 。
并非是想说 API 一个邪恶而糟糕的设计,但是自从 Restful 的概念被提出以来,已经 22 年过去了,我们是不是应该在现在重新思考一下:
- 以网络请求作为前后端的分界是最优解吗?
- 如果没有 API,我们该如何架构和开发 Web 应用?
请求瀑布流(Waterfall)就像 Remix [2] 首页上所展示的,基于 API 和嵌套路由的前端站点,在请求时会出现瀑布流的现象:
文章插图
数据的之间可能是有前后的依赖关系,抑或是和组件强耦合在一起,需要等待组件的 bundle 加载完成之后才能发出请求,这些都导致了请求瀑布流现象的出现 。
并发请求后端希望实现小而美的接口,每个接口有独立的职责,例如:
- getUser 获取用户信息
- getSongs?page=12 获取歌曲列表
- getNotifactions 获取通知列表
- getFavoirateSongs 获取收藏的歌曲
- getNewSongs 获取新发布的歌曲
- getRecommendSong 获取今日推荐的歌曲及对应的文案
- getSearchBarHotKeywords 获取热门的搜索词
- getAdBanner 获取广告 banner 内容
- getRecentSongs 获取最近听歌记录
- getRecommendedPlayList 获取推荐的歌单列表
推荐阅读
- 大量走路影响着床吗
- |几个小细节,可有助我们职场晋升
- 为什么那些伤害我们最深的往往是最亲近的人 皮格马利翁效应是什么
- 冬天吃黑色食物补肾气,板栗补肾健脾
- 跨行转账手续费扣多少 跨行转账要收多少手续费?
- 中药食疗补肾怎么样呢
- 中药大黄药性与功效
- 我国占全球陆地面积多大? 中国陆地面积有多大?
- 我们要保护蝴蝶,但它不完全是益虫。 蝴蝶属于益虫还是害虫?
- 跑步锻炼的时间如何安排
