渲染器
捐赠者名单
Languages
English
简体中文
GitHub
捐赠者名单
Languages
English
简体中文
GitHub
组件的本质
组件的产出是什么
组件的 VNode 如何表示
组件的种类
先设计 VNode 吧
用 VNode 描述真实 DOM
用 VNode 描述抽象内容
VNode 的种类
使用 flags 作为 VNode 的标识
枚举值 VNodeFlags
children 和 ChildrenFlags
VNodeData
辅助创建 VNode 的 h 函数
在VNode创建时确定其类型 - flags
在VNode创建时确定其children的类型
使用 h 函数创建 VNode
渲染器之挂载
责任重大的渲染器
挂载普通标签元素
基本原理
class的处理
Attributes 和 DOM Properties
事件的处理
挂载纯文本、Fragment 和 Portal
挂载文本节点
挂载 Fragment
挂载 Portal
有状态组件的挂载和原理
函数式组件的挂载和原理
渲染器之patch
基本原则
替换 VNode
更新标签元素
更新标签元素的基本原则
更新 VNodeData
更新子节点
更新文本节点
更新 Fragment
更新 Portal
有状态组件的更新
主动更新
初步了解组件的外部状态 props
被动更新
我们需要 shouldUpdateComponent
函数式组件的更新
渲染器的核心 Diff 算法
减小DOM操作的性能开销
尽可能的复用 DOM 元素
key 的作用
找到需要移动的节点
移动节点
添加新元素
移除不存在的元素
另一个思路 - 双端比较
双端比较的原理
双端比较的优势
非理想情况的处理方式
添加新元素
移除不存在的元素
inferno 所采用的核心 Diff 算法及原理
相同的前置和后置元素
判断是否需要进行 DOM 移动
DOM 移动的方式
求解最长递增子序列
不足之处
References
自定义渲染器
自定义渲染器的原理
自定义渲染器的应用
References
#
江山父老能容我 不使人间造孽钱
点击查看啊【捐赠列表】
#
微信
#
支付宝
在 GitHub 上编辑此页