沃梦达 / IT编程 / 前端开发 / 正文

Vue常见面试题(持续更新中...)

本篇文章总结了在面试vue中经常会遇到的一些题,并给出了相应的简答。1.vue实现数据双向绑定的原理? 数据的双向绑定,指的是view和data两者之间的数据双向通信的问题。 view-data:是通过监听事件知道数据的改变,...

本篇文章总结了在面试vue中经常会遇到的一些题,并给出了相应的简答。

1.vue实现数据双向绑定的原理?
数据的双向绑定,指的是view和data两者之间的数据双向通信的问题。
view->data:是通过监听事件知道数据的改变,从而改变data内容
data->view:vue定义对象使用了Object.defineProperty()来定义一个对象,这个方法包含了get(),set()方法,当获取或者赋值的时候都会触发相应的get或set方法,从而就能知道data的改变,也就是我们常说的数据劫持
最后,这些改变要进行统一管理,则需要使用观察-订阅模式即:Observer->Wacher。Observer用来监听所有对象属性的改变,如果发生了变动,就通知Wacher订阅者,订阅者得到消息后则执行对应的函数来更新视图
更详细的说明

2.为什么vue能实现DOM的高效渲染?
vue使用了虚拟DOM技术。虚拟DOM本质上就是一个JS对象,具有DOM的树形结构和对应的属性,相比较于传统的操纵DOM方式,vue会使用算法比较新旧虚拟DOM的变动,只会对变动的DOM最终渲染到真实DOM中,这样就大大节省了资源,提高了运行速度
更详细的说明

3.vue组件间传值的方式有哪些?
a. props和$emit:
父->子 父组件中引用子组件时在子组件上绑定自定义属性,子组件则在props中接收
子->父 子组件中通过$emit一个自定义事件,传递一些信息给父组件,父组件则绑定该事件来接收
b.事件总线即eventBus:这种方式能跨级传递值。
通过总线的emit方法来广播,然后通过on方法来接收
c.$attrs和$listeners:
$attrs: 包含了父作用域中不被 prop 所识别 (且获取) 的特性绑定 (class 和 style 除外)
$listeners: 包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器
d.依赖注入(provide,inject):这种方式允许一个祖先向子孙后代传递值
即:祖先组件中通过provide来提供变量,然后在子孙组件中通过inject来注入变量
e.$parent、$children和$refs
通过$parent来获取父组件的实例,通过$children来获取子组件的实例
给定子组件ref值,父组件则能通过$refs获取子组件的实例
显而易见,这些方式不能跨越父子组件,在兄弟组件之间也无法传递值
f.vuex
更详细的说明

4.vue的生命周期及相应的解释

更详细的说明

本文标题为:Vue常见面试题(持续更新中...)