持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情
本系列旨在对Vue进行查漏补缺,理解原理
提到vue的双向绑定,就需要了解相应的架构模型(MVVM)
1、来说说vue的双向绑定?
Vue、AngularJS都是 MVVM 架构,视图 UI 和业务逻辑是分开的,其中VM(ViewModel)的核心功就是数据的双向绑定
双向数据绑定:
将Model转化成View,即将数据转化成所看到的页面。实现的方式是:数据绑定。
将View转化成Model,即将页面转化成数据。实现的方式是:DOM 事件监听。
原理:
采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
2、MVC、 MVP、 MVVM 的区别?
MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
1. MVVM 是 MVC 的改进版:
- 数据层(Model):数据及业务逻辑
- 视图层(View):展示效果,各类UI组件
- 业务逻辑层(ViewModel):核心,负责监听 Model 中数据的改变并且控制视图的更新,处理用户交互操作(Model和View无直接关联)
2. MVC
Model、View 、Controller
- Controller是桥梁,它从视图读取数据,控制用户输入,并向发送数据。
- View 接收到用户的交互请求之后,会将请求转发给 Controller,Controller 解析用户的请求之后,数据发送对应的 Model。
- View 层和 Model 层耦合在一起,当项目逻辑变复杂的时候,可能会对代码的复用性造成一些问题
3. MVP
Model、View 、Presenter(代理)
-
MVP所有的交互都发⽣在Presenter内部,通过使用 Presenter 来实现对 View 层和 Model 层的解耦。(MVC中View会直接从Model中读取数据,⽽不是通过 Controller)
-
View 层和 Model 层无直接关联,View 不依赖 Model
-
React采用了单向数据流