-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
总结数据驱动
数据驱动是 Vue.js 的核心思想,通过对数据的修改直接映射到对应的 DOM 上,不需要像以前还要关注 DOM 层面的操作;
- 从
new vue构建实例时调用构造函数Vue,在函数内执行各种初始化的钩子函数等,通过vm.$mount方法挂载vm,将模板渲染成实际的 DOM; - 在
vm.$mount实现挂载的过程中通过对不同平台(web、weex)的代码按不同执行文件进行了区分,在方法中通过vm._render方法先生成虚拟 Node,通过实例化的渲染Watcher最终调用vm._update更新 DOM; vm._render最终是执行createElement方法并返回一个虚拟vnode,通过 Virtual DOM 映射到真实的 DOM,而在映射的过程中需要学习createElement创建VNode的过程,它创建每个VNode都有 children,children 每个元素也是一个VNode,这样就形成了一个 VNode Tree;最后通过vm._update完成虚拟 node 到真实 DOM 的渲染;vm._update方法更新数据是在首次渲染和数据需要更新时调用,而它的核心是在不同平台下的vm.__patch__,通过参数nodeOps封装的一系列 DOM 操作方法 和modules定义的一系列模块的钩子函数在底层方法中通过虚拟Node创建真实的 DOM,最后通过调用原生的 DOM API (appendChild、insertBefore) 进行 DOM 操作动态创建 Vue 的 DOM 并插入到 Body 上。
总结了一个大概,也许过于潦草,但还是希望记录能给自己带来流程的理解。
Metadata
Metadata
Assignees
Labels
No labels