vue常考面试点(上)

409 阅读2分钟

什么是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之间的同步工作完全是自动的,无需人为干涉
因此开发者只需要关注业务逻辑,不需要手动操作DOM,不需要数据状态的同步问题,复杂的数据状态完全有MVVM来同意管理

MVVM和MVC的区别

mvc和mvvm其实区别并不大,都是一种设计思想,主要是mvc中的controller演变成了mvvm中的viewModel
mvvm主要解决了mvc中大量的DOM操作使页面渲染性能降低,加载速度变慢,影响用户体验,和当Model频繁大声变化,开发者
需要主动更新到view

Vue的优点是啥?

1.低耦合:实体图(view)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View""上,当view变化的时候Model
  可以不变化,当Model变化的时候View也可以不变化
2.可重用性:你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑
3.独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
4.可测试:界面素来都是很难测试的,但是现在测试可以针对ViewModel来写

vue声明周期的理解

总共分为4个阶段 、8个钩子函数,创建前/后,挂载前/后,更新前/后,销毁前/后。

1.创建前/后:在beforeCreate阶段,vue实例的挂载元素el还没有,created阶段可以发ajax请求
2.挂载前/后:在beforeMount阶段,vue实例的$el和data都初始化了,但还是挂载之前为虚拟的dom节点,data.message还未替换
在mounted阶段,vue实例挂载完成,data.message成功渲染
3.更新前/后:当data变化时,会触发beforeUpdate和updated方法
4.销毁前/后:在执行destory方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在