vue源码核心部分

时间:2023-12-16 23:46:02

1.模板编译   初始化时做的:template ==parse()==>ASTtree ==generate()==>render函数  ==> mount(调用dom方法)

每次更新都要做的: render函数 ==> vNode tree ==> patch(oldVnode, vNode) ==> update(调用dom方法)

2.diff算法  关键词:同层级比较  复杂度o(n)  两对头尾指针 加key复用

实现: patch==> 判断sameNode ==> patchNode() ==> 更新text && updateChildren ==> while循环 递归调用patchNode

3. $watch  批量更新 通过Object.defineProperty实现