触类旁通多种框架
关键词:双向绑定 、依赖收集、发布/订阅模式、虚拟DOM、虚拟DOM diff、模板编译。
- 响应式框架基本原理
-
收集视图依赖了哪些数据 - 依赖收集
-
模板编译 - 遍历+正则
-
模板编译过程中读取数据,表示get/set
-
感知被依赖数据的变化 - 数据劫持/数据代理 - Object.defineProperty/Proxy
-
数据变化时,通知需要更新的视图,并进行更新 - 发布/订阅模式
-
虚拟DOM:用数据结构表示DOM结构
-
不减少操作DOM的次数,能够精确地获取最小的操作的DOM的集合
-
DOM diff - 递归/最小化差异应用
React
- JSX条件渲染
假设有一个列表页,状态有数据获取中,数据获取出错,数据为空,展示数据四种状态。
思考:为什么不能直接在JSX中使用if/else
-
React diff/React Fiber
-
组件设计
-
单一职责 - HOC
-
组件通信和封装 - 组件的state结构保持在内部
-
组合性 - render props
-
纯组件
-
组件可测试性
-
组件命名
-
数据状态管理
React state/Redux store - 从数据持久度和数据消费范围分析
- 拓展:Mobx
Redux提倡函数式/不可变性/数据扁平化,依赖发布订阅模式
Mobx数据源可变,对数据的观察是响应式的。
-
React Hook
-
按业务逻辑拆分代码,而不是按生命周期。
-
只可以在顶层使用
-
性能
-
避免不必要的渲染 - shouldComponentUpdate/PureComponent/memo
-
使用无状态组件