vue系列-vue进阶
源码学习总结
函数柯里化的使用,如patch部分。
工具类纯函数的封装和解耦,不管多小的功能,如判断值是否有效,
!== null || !== undefined
也可以封装成纯函数。代码中节点的处理使用了深度优先的思想和递归。
闭包。善用闭包,将简单的暂存操作也可以提取成闭包进行代码优化。
策略模式。options的合并策略。
链表数据结构。类似链表的数据结构建立组件间的父子关系。
确保函数只执行一次。
export function once (fn: Function): Function { let called = false return function () { if (!called) { called = true fn.apply(this, arguments) } } }
patch
patch 的整体流程: createComponent -> 子组件初始化 -> 子组件 render -> 子组件patch
activeInstance 为当前激活的 vm 实例;vm.$vnode 为组件的占位 vnode;vm._vnode 为组件的渲染 vnode。