Vue 面试题
1、Vue 的生命周期
每一个 vue 实例从创建到销毁的过程,就是这个 vue 实例的生命周期。在这个过程中,
他经历了从开始创建、初始化数据、编译模板、挂载 Dom、渲染→更新→渲染、卸载等一
系列过程。
将要创建 ===>调用 beforeCreate 函数
创建完毕 ===>调用 created 函数
将要挂载 ===>调用 beforeMount 函数
挂载完毕 ===>调用 mounted 函数
将要更新 ===>调用 beforeUpdate 函数
更新完毕 ===>调用 updated 函数
将要销毁 ===>调用 beforeDestory 函数
销毁完毕 ===>调用 destroyed 函数
2、vue 生命周期的作用是什么?
Vue 生命周期中有多个事件钩子,让我们在控制整个 Vue 实例过程时更容易形成好的逻辑。
3、vue 是怎么实现双向数据绑定?
vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过
Object.defineProperty()来劫持各个属性的 setter,getter,在数据变动时发布消息给订
阅者,触发相应监听回调。当把一个普通 Javascript 对象传给 Vue 实例来作为它的
data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为
getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访
问和修改时通知变化。
vue 的数据双向绑定 将 MVVM 作为数据绑定的入口,整合 Observer,Compile 和
Watcher 三者,通过 Observer 来监听自己的 model 的数据变化,通过 Compile 来解析编
译模板指令(vue 中是用来解析 {{}}),最终利用 watcher 搭起 observer 和 Compile 之间
的通信桥梁,达到数据变化 —>视图更新;视图交互变化(input)—>数据 model 变更双
向绑定效果。
4、什么是 MVVM ?
MVVM 是 Model-View-ViewModel 的缩写。MVVM 是一种设计思想。Model 层代表数据模
型,也可以在 Model 中定义数据修改和操作的业务逻辑;View 代表 UI 组件,它负责将数
据模型转化成 UI 展现出来,ViewModel 是一个同步 View 和 Model 的对象。
在 MVVM 架构下,View 和 Model 之间并没有直接的联系,而是通过 ViewModel 进行交
互,Model 和 ViewModel 之间的交互是双向的, 因此 View 数据的变化会同步到 Model
中,而 Model 数据的变化也会立即反应到 View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接起来,而 View 和 Model 之间