文章目录
- React 的设计理念 的理解
- 解决 CPU 瓶颈
- 解决 IO 瓶颈
React 的设计理念 的理解
从 React 官网中的 React 哲学文档中,可以看出 React 目的是实现快速响应
影响快速响应的因素:计算能力和网络延迟,即 CPU 和 IO 的瓶颈
解决 CPU 瓶颈
浏览器一般是是 16.6ms 刷新一次,在这 16.6 ms 中,会依次执行 JS 脚本执行,样式布局,样式绘制,如果在 JS 脚本执行超过了 16.6ms,那就来不及执行后面两步,就会造成掉帧卡顿的现象
在解决这个掉帧卡顿的问题中,我们一般有 同步更新,防抖,节流等方法,但是都是治标不治本。
React 从根本上解决这个问题:将同步更新变为 异步可中断更新
主要机制是:React 与 浏览器做了一个约定,浏览器将自己 一帧中的部分时间预留给 React,
React 利用这部分预留时间来完成自己的工作,如果某一个工作需要的时间特别长,超出了预留的时间,React 会中断自己的工作,并将执行权交给浏览器,等待下一帧预留的时间到来以后,再继续执行之前被中断的工作,这样浏览器在每一帧都会执行样式布局和样式绘制的工作,这样就会减少掉帧的可能性。所以采用异步更新的机制之后,即使是更新大量的节点这样的 CPU 密集型操作,React 也能有效的减少掉帧的可能性
解决 IO 瓶颈
在异步操作的时候(比如网络请求),如果有一个 loading 效果,那就会让用户明显的知道
这是一个异步操作,但是 如果延迟这个loading 效果的展示时间,从用户的感知操作来说,就和同步没有什么区别,这就是 将人机交互的结果融入到 UI 交互的例子
为了解决 IO 瓶颈,React 正从框架层面上来实现 异步可中断更新
参考资料:
react 官网
react 技术揭秘
react 官网的 issue 解答