函数式编程范式在很多框架和库里中使用十分广泛,目前React已经全面拥抱函数式组件,源码中处处体现了函数式编程的思想。Vue3里所有的响应式API都是函数式编程,可以用reactive、watch、computed来组合出各种各样的可复用的逻辑。包括使用很广泛的lodash工具库就是一个典型的函数式编程库,此外包括Redux,Koa,Express里面也有很多是函数式编程。所以学习了解函数式编程范式是很有必要的。
# 1. 渲染器宏观逻辑介绍
在上一篇文章中,我们实现了如何将jsx编译成React.createElement(...),执行后得到虚拟 DOM。这一章我们循序渐进的讲一下渲染器的基本工作原理,也就是runtime-dom那部分。简单说渲染器就是将 虚拟 DOM 渲染成特定平台下真实 DOM 的工具(本质是一个函数,通常叫 render)。渲染器的工作流程分为两个阶段:mount 和 compareTwoVdom,第一次渲染,由于没有旧的 VNode,直接将新的 VNode 创建成真实的 DOM挂载到指定的容器内,这个过程叫做 mount; 下一次再渲染的时候会生成新的 VNode,则会使用新的 VNode 与上一次生成的旧 VNode 进行对比,以最少的性能开销完成对真实 DOM 的更新,这个过程就叫 “打补丁”,也就是diff的部分。
