vue面试题目|MVVM、MVC、MVP,数据劫持

使用 Object.defineProperty() 来进行数据劫持有什么缺点?

  • 在对一些属性进行操作时,使用这种方法无法拦截,比如通过下标方式修改数组数据或者给对象新增属性,这都不能触发组件的重新渲染,因为 Object.defineProperty 不能拦截到这些操作。更精确的来说,对于数组而言,大部分操作都是拦截不到的,只是 Vue 内部通过重写函数的方式解决了这个问题。
  • 在 Vue3.0 中已经不使用这种方式了,而是通过使用 Proxy 对对象进行代理,从而实现数据劫持。使用Proxy 的好处是它可以完美的监听到任何方式的数据改变,唯一的缺点是兼容性的问题,因为 Proxy 是 ES6 的语法。

4. MVVM、MVC、MVP的区别

  • MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
  • 在开发单页面应用时,往往一个路由页面对应了一个脚本文件,所有的页面逻辑都在一个脚本文件里。页面的渲染、数据的获取,对用户事件的响应所有的应用逻辑都混合在一起,这样在开发简单项目时,可能看不出什么问题,如果项目变得复杂,那么整个文件就会变得冗长、混乱,这样对项目开发和后期的项目维护是非常不利的。

(1)MVC

  • MVC 通过分离 Model、View 和 Controller 的方式来组织代码结构。其中 View 负责页面的显示逻辑,Model 负责存储页面的业务数据,以及对相应数据的操作。并且 View 和 Model 应用了观察者模式,当 Model 层发生改变的时候它会通知有关 View 层更新页面。Controller 层是 View 层和 Model 层的纽带,它主要负责用户与应用的响应操作,当用户与页面产生交互的时候,Controller 中的事件触发器就开始工作了,通过调用 Model 层,来完成对 Model 的修改,然后 Model 层再去通知 View 层更新。

View动作指令驱动视图选择模型ControllerModel

(2)MVVMMVVM 分为 Model、View、ViewModel:●Model代表数据模型,数据和业务逻辑都在Model层中定义;●View代表UI视图,负责数据的展示;●ViewModel负责监听Model中数据的改变并且控制视图的更新,处理用户交互操作;

  • Model和View并无直接关联,而是通过ViewModel来进行联系的,Model和ViewModel之间有着双向数据绑定的联系。因此当Model中的数据改变时会触发View层的刷新,View中由于用户交互操作而改变的数据也会在Model中同步。
  • 这种模式实现了 Model和View的数据自动同步,因此开发者只需要专注于数据的维护操作即可,而不需要自己操作DOM。

业务逻辑底层数据ModelViewModelViewDataBinding数据结果

(3)MVP

MVP 模式与 MVC 唯一不同的在于 Presenter 和 Controller。在 MVC 模式中使用观察者模式,来实现当 Model 层数据发生变化的时候,通知 View 层的更新。这样 View 层和 Model 层耦合在一起,当项目逻辑变得复杂的时候,可能会造成代码的混乱,并且可能会对代码的复用性造成一些问题。MVP 的模式通过使用 Presenter 来实现对 View 层和 Model 层的解耦。MVC 中的Controller 只知道 Model 的接口,因此它没有办法控制 View 层的更新,MVP 模式中,View 层的接口暴露给了 Presenter 因此可以在 Presenter 中将 Model 的变化和 View 的变化绑定在一起,以此来实现 View 和 Model 的同步更新。这样就实现了对 View 和 Model 的解耦,Presenter 还包含了其他的响应逻辑。

MVP模式和MVC唯一不同的在于Presenter和Controller在mvc模式当中使用观察者模式,来实现model层数据发生变化的时候通知view层的更新,这样view层和model层耦合在一起,当项目逻辑变得复杂的时候可能会造成代码的混乱,并且可能会对代码的复用性造成一定的问题,MVP模式通过Presenter来实现对view层和model层的解耦,mvc当中的controller只知道model的接口,因此他没有办法控制view层的更新,mvp模式当中view层的接口暴露给了presenter因此可以在presenter当中将model的变化和view的变化绑定在一起,因此来实现view和model的同步更新,

前端学习面试题目大全 文章被收录于专栏

前端学习总和,前端面试题目大全,包含html,css,javascript,react,vue,小程序,算法,浏览器,计算机网络,操作系统等等

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务