前端面试题目总结(Vue)

1、谈谈你对VUE的理解

  • vue就是一个用于创建用户界面的渐进式的JavaScript框架
  • vue有三个好处:
  • 1、采用了组件化的模式,把HTML封装和组件好,这样可以重复使用代码,提高代码利用率。
  • 2、声明式编码,不用再手写DOM,直接在页面上渲染,提高开发效率。
  • 3、采用了虚拟DOM,比较前后DOM的更新变化,尽可能复用DOM,减少内存消耗,优化性能。

2、谈谈你对MVVM的理解

  • MVVM是Model-View-ViewModel的简写,Model就是模型,对应Vue中的Data中的属性,View就是视图,对应template模板,ViewModel就是Vue实例,它有两个方向,一个是把Model中的数据挂载到ViewModel上,自动渲染到View中。一个View数据变化时,Model也会跟着更新,这样就实现了数据双向绑定的过程。
  • MVVM的好处就是:
  • 1、实现数据双向绑定,减少View和Model的耦合性
  • 2、不用再手写DOM,让程序员更加关注数据的变化
  • 3、数据频繁更新时,复用DOM,优化性能。

3、MVC和MVVM的区别

  • MVC是Model-View-Controller的简写,Model对后端数据,View对应视图,Controller对应控制器,MVC的工作原理就是:用户在视图页面发出请求时,就会通知路由,路由就找到对应的控制器,控制器就会把后端的数据传给前端,响应用户。
  • MVC和MVVM中的M和V是一样的,只不过把C中的页面逻辑视图抽离出来给了前端,变成VM,这样实现了数据双向绑定,所以说,MVVM是MVC的改进版,
  • 最大的区别就是:
  • 1、MVC是单向的,MVVM是双向的。
  • 2、MVVM解决了MVC中产生的大量的DOM操作,提高了开发效率
  • 3、在数据频繁更新的时候,采用了虚拟DOM,减少过度渲染,提高性能。

4、VUE的响应式原理

  • 响应式:当渲染视图时使用到了一个数据,当这个数据变化时,视图就会响应是否更新,这就叫做响应式。
  • VUE的响应式原理的核心是Obejct.defineProperty
  • 简单来说,Vue会通过Observe对data中的所有属性进行检测,然后通过Obejct.defineProperty对data的所有属性进行一个数据劫持,当获取数据时,对数据进行一个依赖的收集,当更新数据时,就会通知对应的依赖进行视图更新。
  • 如果数据类型是对象的话,就会调用this,walk()这个方法,内部就会通过DefineReactive对数据循环,定义响应式,核心就是通过Obejct.defineProperty对数据进行劫持并监听。
  • 如果数据类型是数组的话,就要用到函数劫持的方法,先定义好原型方法,改变数组的方法有7种,分别是pop、push、shift、unshift、splice、sort、reverse。然后数组通过原型链调用我们自己定义的方法,实现数组更新,通知更新视图。如果数组里面有对象的话,就用Obeserve进行检测。
  • Vue3.0就不用Obejct.defineProperty来实现响应式,而是通过Proxy来实现,直接检测数组,不用再用到函数劫持。

5、VUE数据双向绑定原理

  • vue通过数据劫持结合订阅者-发布者实现的数据双向绑定原理。
  • 简单来说,就是vue会利用Obsever对数据进行检测,然后利用Object.defineProerty对data中的所有属性进行一个重新定义,对数据的获取和设置进行数据劫持,获取数据时,对数据进行一个依赖收集,就叫做订阅者(Watcher),数据更新后,就会通知订阅者更新视图。最后通过Complie解析器,来解析模板命令,把属性转为数据,绑定更新函数,添加到绑定数据的订阅者,一旦数据变化,就通知订阅者,更新视图。
  • 简单来说就三个步骤:
  • 1、实现一个监听器(Obsever),对数据进行劫持和监听,数据变化时,通知订阅者
  • 2、实现一个订阅者(Watcher),收集通知并调用对应的函数,进行视图更新
  • 3、实现一个解析器(Complie),解析命令,把属性转为数据,并初始化视图模板。

6、computed和watch的区别

  • computed是计算属性,watch是监听属性
  • 相同点:它们都是用来监听数据变化的
  • 它们的不同点:
  • 1、computed有缓存功能,只有它依赖的属性值发生改变的时候,它才会重新计算。而watch没有缓存功能,只要它监听的数据有变化,它就是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jasmine_qiqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值