前端面试题 vue

135 阅读2分钟

双向绑定原理

面试题:

1.vue的双向绑定原理是什么?(不是v-model的原理)

在vue2.x中,通过Object.definePropty方法给数据对象添加gettersetter方法来进行数据劫持,在核心数据库通过监听器和订阅器来实现数据的实时更新,在setter方法中对要使用这个数据的dom节点的消息订阅,然后赋值的时候发布消息,然后dom节点根据消息来经行页面数据更新。Object.definePropty 它只能兼容到IE9。  

2.vue2.x的双向绑定有什么问题?

需要递归遍历给所有数据属性添加setter和getter属性,性能就比较低。在vue3.x中,使用的代理(Proxy)对象来实现的数据托管。 它不兼容IEconst p = new Proxy(target, handler)

3.v-show和v-if有什么区别?

v-show是在页面加载时,将页面所需要的元素全部加载,在需要显示的dom节点上添加v-show,通过一定的条件来控制节点显示的样式和内容。
v-if则是只需要加载所满足条件的样式和内容,在页面加载中不会把dom节点所具有的所有样式加载出来,当dom节点的属性发生变化时,再重新加载所需要的样式,并且重新渲染页面。

4.v-show和v-if哪个好?

两者没有明确的好坏,主要看所需要的应用场景。
如果页面不需要经常刷新,v-show比较合适,因为他是一次性把页面所需要的所有样式全部加载出来,当don节点条件发生改变时,不需要再加载其他样式。
如果页面需要经常刷新,则v-if比较合适,他所需要加载的样式和内容较少,所占用的内存也较小,页面刷新后重新加载的效率也较快,比较适合高频率刷新。