Vue-Vue的加载流程
第一步:
每一个组件在加载时都会调用内部的render函数把这个组件的template选项的模板解析为一个Javascript对象,而这个对象跟DOM节点对象一摸一样,这个对象的作用就是为了后面的页面渲染。
第二步:
接下来就是数据劫持代理监听等
底层有一种设计: 发布/订阅设计 其实就是写了一个watcher函数去订阅(监听) 数据的改变(底层js语法就是defInedproty,v3是proxy)
当数据发生变化以后:
当状态(数据)变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较(diff),记录两棵树差异,然后把第二棵树所记录的差异应用到第一棵树所构建的真正的DOM树上(patch),视图就更新了
旧VNode树=>新VNode树=>刷新页面 这个想法是不对的
旧VNode树 和 生成的新VNode树 比较差异然后更新DOM(刷新页面) 这个就是对的 实现这个过程的代码就是DIFF算法
本文来自博客园,作者:前端小白银,转载请注明原文链接:https://www.cnblogs.com/forever-ljf/p/16667845.html