五、《揭秘一线互联网企业 前端JavaScript高级面试》视频教程总结系列五:MVVM和Vue 相关...

 


 

 系列目录:https://www.cnblogs.com/lmyxywy/p/10931603.html

 


 

问题一:说一下使用Jquery和使用vue的区别。

 

Jquery是对繁琐的Dom操作进行了封装,同时也在里面封装了兼容浏览器的处理方式,更方便开发人员选取和操作DOM对象,在这里,视图和数据是耦合在一起的,这样不利于复杂业务逻辑的开发;

而vue解耦了视图和数据,将Dom相关操作完全封装在了内部,通过数据来驱动视图,只关心数据的变化,将开发人员从繁琐复杂的Dom操作中解放了出来,能够更加专注于前端业务逻辑的实现。

 


 

问题二:如何理解MVVM?

 

MVVM是一种基于前端开发的架构模式,它起源于后端MVC框架,是为了适应日渐复杂的前端业务而生。

因为后端MVC模式并不完全适合前端场景,所以前端开拓者们将MVC中的C - Controller,变形为VM - ViewModel。

VM在MVVM模式中相当于一座桥梁,解耦了视图和数据,同时又连接着视图和数据。

视图通过事件绑定的方式改变数据,数据通过数据绑定的方式改变视图,它们都是通过VM来进行交互的。

 


 

问题三:vue的三要素有哪些?

 

响应式、模板引擎、渲染。

 


 

问题四:vue是如何监听到data的每个属性变化的?

 

通过Object.defineProperty()方法实现,Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

它接收的第三个参数中含有两个函数,分别是set()和get(),在这两个函数中就可以添加自定义的监听逻辑,从而达到监听数据变化的目的。

vue通过遍历data属性,在遍历函数中,利用Object.defineProperty()将每一个data属性绑定在vue对象上,同时添加监听逻辑,这样vue就可以监听到data属性的变化。

 

下面是实现的核心函数:

var vm= {};
var data = {
    name:'zhangsan',
    age:20
};
var key;
for(key in data){
    (function(key){ // 命中闭包,保证key的独立空间
        Object.defineProperty(vm, key, {
            get:funtion(){
                // 此处可写监听逻辑
                return data[key];
            },
            set:function(newVal){
                // 此处可写监听逻辑
                data[key] = newVal;
            }
        })
    })(key)
}

 


 

 

未看完,待续。。。

 

转载于:https://www.cnblogs.com/lmyxywy/p/11307016.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值