vue八股文3.0

181 阅读2分钟

谈谈你对MVVM框架的理解?

就是数据驱动视图,通过状态的修改MVVM的框架就会主动的更新视图。

什么是虚拟DOM?在vue中为什么要使用虚拟DOM?

虚拟DOM简单来说就是用JS对象来模拟DOM结构,

为什么:因为每当有数据发生改变的时候,就会生成新的虚拟DOM,进一步发生diff算法,找出最小的脏节点,减少不必要的DOM开销。

谈谈你对虚拟DOM和diff算法的理解?

虚拟DOM就是一个JS的对象,这个对象可以映射出真实的DOM结构,通过虚拟DOM可以加快状态变化前后的DOM的区别,加快视图更新的效率。

diff算法就是递归每个节点,但是他对比的是每个key值,如果key值相同,它就会认为这个节点里边也都没变化,就不再往里边递归,直接用缓存。如果key值不同,那也不再往里边递归,而是直接用新的替换旧的。

说说vue中为什么要使用key值?

因为添加Key这个唯一的标识后,vue的diff算法会根据Key值来对比,如果key值没有改变的话,它就会认为没有发生改变,如果key值发生了改变,把新的值替换旧的值。

vue双向数据绑定v-model的原理是什么?观察者模式?

v-model本质上是语法糖,v-model在内部为不同的输入元素使用不同的属性并抛出不同的事件

是不是属于观察者模式:个人感觉是,因为v-model是监视页面的变化,当发生改变的时候,就会通知页面重新渲染,而观察者模式只要被观察者发生了改变,观察者就要做一些事情。