一.Virtual Dom
虚拟DOM是一种轻量级的抽象,它允许我们在Javascript中创建、更新和删除DOM元素。它是React等现代Javascript框架的核心概念之一。
Vue的虚拟dom是一种抽象层的概念,它使得Vue可以高效地更新Dom。虚拟Dom是通过Javascript对象来表示DOM结构的一种方法。当数据改变时,vue会对比新旧虚拟Dom之间的差异,然后只将需要变更的部分应用哦到真
二.diff算法
在vue中,diff算法是用来比较新旧虚拟节点,并找出最小的差异进而更新DOM的。这是Vue高效更新Dom的核心所在。
Vuede diff算法是基于snabbdom改进而来,并且做了优化以使用vue的用例和特性。
import Vue from 'vue';// 创建一个Vue实例
new Vue({el: '#app',data: {message: 'Hello Vue!',},// 模板中的内容会被转换成render函数,diff算法在这里被应用render(h) {return h('div', this.message);},
});// 更新Vue实例的数据
setTimeout(() => {app.$data.message = 'Hello World!';
}, 2000);
三.模板编译器原理
Vue模板编译器的核心是将Vue模板转换成可执行的Javascript代码。这个过程主要包括以下几个步骤:
1.解析:将末班字符串解析成抽象语法树(AST)
2.转换:将AST转换成可执行的代码
3.生成:生成可执行的代码字符串