1.如何理解MVVM(组件化)
- VM:vue使用了数据驱动视图(VM:view-model),这里一般体现在vue的事件监听里面,即methos里面的,这里就是与原先那种MVM最本质的区别,VM这个是VUE框架自带的功能,框架会通过监听不同的事件,修改数据,自动渲染dom,不需要人工去修改dom;
- Model:体现在vue里面的data数据里面;
- View:体现在模板即Html相关代码;
2.VUE响应式原理
- 1.vue响应式原理,关键在于通过API,Object.defineProperty实现监听和修改。原理代码如下:
const data = {};
const name = 'zhangsan';
Object.defineProperty(data,"name", {
get:function () {
console.log(’get‘);
return name ;
},
set: function (newVal) {
console.log('set');
name = neaVal;
}
});
//测试
console.log(data.name);//结果:get zhangsan
data.name = 'list1';//运行结果:set
- 2.Object.defineProperty实现监听的缺点
1.深度监听,需要递归到底,一次性计算量大
2 .无法监听新增属性/删除属性(需要使用Vue.set,Vue.delete)
3 .无法原生监听数组,需要特殊处理
虚拟DOM(vdom)和diff
通过vdom -用js模拟DOM结构,计算出最小的变更,操作DOM
通过diff算法比较差异,进行一些的数据驱动视图的操作