本次react 大会 我认为技术层的重点在react服务端渐进渲染 和 react native desktop。

一. Suspense 和 服务端渐进渲染

Suspense 是解决 加载中 的问题。

之前这种异步加载的加载中状态是使用state,手动来控制显示隐藏,多个接口请求时,还需要手动提升状态。

Suspense 封装了这个逻辑,其实这个之前已经可以用了,这次最大的改变是在服务端渲染中的支持,这可以解决之前诟病已久的“服务端渲染白屏”问题。

这个问题在我们的私募服务中尤其明显,当服务端的接口很慢时,服务端渲染白屏时间有时要1s,打开体验比不用SSR差很多,后续不得不把慢接口请求都放在了web端,进而实现骨架屏和渐进加载。

服务端渐进渲染 steam server render with Suspense

特性如下:

  • 慢的组件不会拖慢 整页的首屏时间
  • 先展示初始html 再流式渲染剩余页面
  • 代码分割跟服务端渲染完整融合起来

steaming HTML

与之前的妥协做法不同(先骨架屏然后交由web渲染),始终是服务端,并且是逐渐渲染的,HTML加载也是渐进式。接口在服务端请求 自然会比客户端快。

另外一个特点是 不用所有的组件都渲染完 就能交互。

show me the code

具体这个steaming HTML怎么实现的大家可以看下这个介绍

https://github.com/reactwg/react-18/discussions/22

而 demo 则可以使用这个例子测试下, 效果很好

https://codesandbox.io/s/kind-sammet-j56ro

server components

这部分在 Hydrogen + React 18 中介绍。shopify的工程师结合react server components 开发了 Hydrogen 这个框架,实现他们的服务端渐进渲染。介绍了些特性。

比如首页初始js会非常小,以及一些特性的图示如下

demo

https://stackblitz.com/edit/shopify-hydrogen-ynuk8b?title=Hydrogen

二. react native desktop

另外一个重头戏就是RN的桌面端了。

facebook messager 和 微软的 xbox 商店都使用RN来开发的。

facebook messager之前使用electron开发,列了一些之前不足:

  • 需要维护electron
  • 不支持OpenGL 需要转成 WebGL
  • Qt开发不便

使用RN开发的优点:

RN支持OpenGL 和 原生windowAPI 原生播放器等

对比electron

  • 包体积降低 80%
  • 冷启动时间减低 60%
  • app崩溃率降低 50%

接下来是微软的开发介绍

微软主要介绍了xbox应用商店使用RN开发,包括 桌面版、XSX XSS的主机版

以及选择 js 和 react rn进行开发的原因

xbox的 electron版 和 rn版 对比:

  • 使用原生组件,视频等性能更好
  • 内存占用从1.6G 降到到 350M
  • cpu从50%降低到30%

react-native-windows 官网

https://microsoft.github.io/react-native-windows/

三. 其他的一些主题:

keynote

总领介绍了react本次大会的内容。讲得非常好,推荐大家完整看下。

https://www.youtube.com/watch?v=FZ0cG47msEk&list=PLNG_1j3cPCaZZ7etkzWA7JfdmKWT0pMsa&index=1

react docs

这部分介绍了react的可交互新文档

文档里多了 codesandbox 和 expo 可交互的例子。

不管是专家还是新手,都值得通看一遍。

react

https://beta.reactjs.org/

react native

https://reactnative.dev/

React Devtools 调试技巧

https://www.youtube.com/watch?v=oxDfrke8rZg&list=PLNG_1j3cPCaZZ7etkzWA7JfdmKWT0pMsa&index=5

react 18 for app developers

介绍了如何升级到react 18, 以及一些特性的简介。

服务端 Suspense

react memo tab点击效果 需要立即响应时,可以用这个来提高速度,在活动页的tab渲染中有过这个问题

cpu slowdown

react without memo

yarn forget
程序会自动化帮着加一些 memo,来提升性能。

On-device Machine Learning for React Native

介绍了RN如何使用机器学习
react-native-pytorch-core

React 18 for External Store Libraries

介绍了如何在三方库使用

The ROI of Designing with React

给设计师介绍react