JS/REACT

JS/REACT

edit
Last updated July 22, 2022
Tags
JS
Framework
Web
Property
关于数据流的实践记录
highmap map collection
记录一个雪碧图计算方法
React Guidebook
Fiber 是一个基于优先级策略和帧间回调的循环任务调度算法的架构方案。 问题:随着应用变得越来越庞大,整个更新渲染的过程开始变得吃力,大量的组件渲染会导致主进程长时间被占用,导致一些动画或高频操作出现卡顿和掉帧的情况。而关键点,便是 同步阻塞。在之前的调度算法中,React 需要实例化每个类组件,生成一棵组件树,使用 同步递归 的方式进行遍历渲染,而这个过程最大的问题就是无法 暂停和恢复 。 解决方法:当遇到进程同步阻塞的问题时, 任务分割、 异步调用 和 缓存策略 是三个显著的解决思路。而 React Fiber 便是为了实现任务分割而诞生的。 💡 Fiber 架构的核心思想就是 任务拆分 和 协同 ,主动把执行权交给主线程,使主线程有时间空档处理其他高优先级任务。 究其原因是浏览器的渲染引擎是单线程,它将 GUI 描绘、时间器处理、事件处理、JavaScript 执行、远程资源加载通通放在一起。当做某件事,只有将它做完才能做下一件事。如果有足够的时间,浏览器是会对我们的代码进行 编译优化(JIT)及进行 热代码优化 ,一些 DOM 操作,内部也会对 Reflow(重绘)进行处理。 Reflow 是一个性能黑洞,很可能让页面的大多数元素进行重新布局。 之前的问题主要的问题是任务一旦执行,就无法中断,JavaScript 引擎线程一直占用主线程,导致卡顿。 页面是一帧一帧绘制出来的,当每秒绘制的帧数(FPS)达到 60 时,页面是流畅的,小于这个值时,用户会感觉到卡顿。 1 秒 60 帧,所以每帧分到的时间是 1000/60 ≈ 16.6 ms
React Guidebook
react diff 学习
常见问题记录
diff 补充
破解mutationobserver
Web playback benchmark info