vue面试问题
1.MVVM模式和MVC模式
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之间的同步工作完全是自动的,无需人为干涉,因开发者只需要关注业务逻辑,不需要手动操作DOM,不需要关注数据状态的同步问题,复杂的数据状态维护完全由MVVM来统一管理。
主要是MVC中的Controller演变成为MVVM中的ViewModel。MVVM主要解决了MVC中大量的DOM操作使页面渲染性能下降,加载速度变慢,影响用户体验。和当Model频繁变化的时候,开发者需要主动更新到View。
2.双向绑定的原理
采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter/getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
具体步骤如下:
A.需要observe的数据对象进行递归遍历
B.compile解析模板指令
C.Watcher订阅者是Observer和Compile之间通信桥梁
D.MVVM作为数据绑定的入口,整合Observer、Compile和Watcher三者
3.生命周期的理解
4.组件之间的传值交互
5.axios的了解
6.v-if和v-show指令的区别
v-show是通过修改元素的display属性让其显示隐藏或者显示
v-if是销毁或者重建DOM达到让元素显示和隐藏的效果
7.keep-alive的作用
会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染。
8.computed、watch、methods之间的区别和各自的应用场景
9.angular双向绑定和vue双向绑定的区别
angular是通过脏检查实现,angular会将UI事件,请求事件,settimeout这类延迟的对象放入到事件监听的脏队列中,当数据变化的时候,触发$diget方法进行数据的更新,视图的渲染。
vue通过数据属性的数据劫持和发布订阅模式实现,大致可以理解为三个模块组成,observer完成对数据的劫持,compile完成对模板片段的渲染,watcher作为桥梁链接二者,订阅数据变化及更新视图。