我们使用Vue开发应用,实际上是编写若干Vue组件,实现模板、data、生命周期钩子等,然后执行new Vue(),将根组件挂载到指定的DOM节点上面,当我们编写的组件中生命周期钩子里面的或者在模板的元素事件中改变数据时候,视图会响应地更新。这样就实现了应用。

    那么Vue是如何实现上面的效果的呢?

    new Vue()之后,Vue会从根组件开始,遍历整个组件树,对每个组件进行处理。

    对于一个Vue组件,Vue首先会进行模板编译,将模板编译为render函数,render函数返回虚拟DOM,如果遇到子组件,也对子组件做同样操作,最终形成一个虚拟DOM树。

    Vue会把虚拟DOM映射到真实DOM并渲染到指定节点上,这样就实现了视图的渲染。

    Vue在组件初始化时候还会设置数据为响应式,并将依赖于数据的渲染方法、computed、watch收集起来。

    当数据改变后,Vue会根据初始化时候收集的依赖,更新视图,这时候我们就看到最新的界面了。

    更详细的原理说明请阅读本文目录下的响应式原理、模板渲染原理。