Vue虚拟Dom,对象开发等!!

数据双向绑定的原理:

vue实现双向数据绑定的原理就是利用了 Object.defineProperty() 这个方法重新定义了对象获取属性值(get)和设置属性值(set)的操作来实现的。

虚拟Dom:

简单来说,虚拟DOM是用Object来代表一颗节点,这个Object叫做VNode,然后使用两个VNode进行对比,根据对比后的结果修改真实DOM。

为什么是两个VNode?因为每次渲染都会生成一个新的VNode,然后和上一次渲染时用的VNode进行对比。然后将这一次新生成的VNode缓存,用来进行下一次对比。

对象开发:

有很多时候我们发现,有些开发人员很多时候将标签的属性写在data里面和用js来生成标签等操作,这是为什么呢?

现代 Web 页面的大多数逻辑的本质就是不停地修改 DOM,但是 DOM 操作太慢了,直接导致整个页面掉帧、卡顿甚至失去响应。然而仔细想一想,很多 DOM 操作是可以打包(多个操作压成一个)和合并(一个连续更新操作只保留最终结果)的,同时 JS 引擎的计算速度要快得多,能不能把 DOM 操作放到 JS 里计算出最终结果来一发终极 DOM 操作?答案——当然可以!所以原因就是他可以提升页面性能,

vue中的对象:

其实vue的操作就是将我们写的template里面的dom,通过rander函数来转化成类似与对象生成标签的写法来比较虚拟dom,所以如果我们直接写成对象树的方法代替我们直接在template里面写标签,将会提升我们页面的很多性能,(个人瞎写的,未了方便以后自己看了能理解)

Vue的一个厉害之处就是利用Virtual DOM模拟DOM对象树来优化DOM操作的一种技术或思路。

Vue源码中虚拟DOM构建经历 template编译成AST语法树 -> 再转换为render函数 最终返回一个VNode(VNode就是Vue的虚拟DOM节点) 

在Vue的mount过程中,template会被编译成AST语法树,AST是指抽象语法树(abstract syntax tree或者缩写为AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式。

具体实现代码可以看Vue源码,或者https://segmentfault.com/a/1190000011531094#articleHeader0

猜你喜欢

转载自blog.csdn.net/qq_37918196/article/details/83996969
今日推荐