赞
踩
在前端开发中,MVVM(Model-View-ViewModel)和MVC(Model-View-Controller)是两种常见的架构模式,用于组织和管理前端应用的结构。
MVVM(Model-View-ViewModel)是一种在前端开发中广泛使用的架构模式,它旨在实现数据驱动的界面和更加可维护的代码结构。它由三个部分组成:模型(Model)、视图(View)和ViewModel(视图模型)。MVVM通过引入ViewModel层,实现了视图(UI)和模型(数据及业务逻辑)之间的解耦,同时利用双向数据绑定机制确保它们保持同步。
例子
// 存放后端返回的数据和前端数据结构
data() {
return {
currentId: '', // 当前部门的ID
departmentList: [], // 部门列表数据
isEdit:false // 是否处于编辑状态
};
},
在Vue.js中,数据模型往往分散在组件的 data 选项中,通过这些数据来驱动视图的显示和交互。
data选项用于定义组件的数据(Model),可以将其视为模型(Model)的一部分。例如这段代码,data 中包含了一些组件需要用到的数据,比如 currentId、departmentList、isEdit。这些数据用于渲染组件的内容和状态,以便在视图中正确显示和更新。
例子
<el-tree
:data="departmentList"
:props="defaultProps"
default-expand-all
:expand-on-click-node="false"
>
<!-- el-tree 中的部分视图结构 -->
</el-tree>
这里使用了element-ui的 el-tree组件,它负责展示部门的层级结构,显示在页面上的树形视图。这部分构成了页面的主要内容展示,属于视图层(View)
页面效果
例子
computed: { // 计算属性 fullMessage() { return this.message + ' ' + this.userInput; }, }, methods: { // 方法 // 从后端获取部门数据 async department() { // ... //后端数据 → 视图 }, // 触发弹出对话框、编辑部门或删除部门等操作 handleCommand(value, id) { // ... }, // 校验完成向服务器发送请求 submitForm()() { // ... // 按钮、输入框的数据 → 后端服务器 }, },
Vue 实例的 methods和 computed 中的一些方法和事件处理逻辑组成视图模型(ViewModel)的一部分
VM有两个方向
一、将Model转换成View,也就是将后端传递的数据(Model)转换成视图(View)。(数据绑定)
二、将View转换成Model,也就是将看到的页面(View)转换成后端的数据(Model)。(DOM时间监听)
这样就是实现了数据的双向绑定。
MVVM强调数据绑定,通过双向绑定确保模型和视图的同步。
通过ViewModel,当数据(Model)变化,视图(View)会自动更新。用户在视图(View)中的交互也会自动更新数据(Model)。
以Vue为例,MVVM各部分组成为
Vue.js 和 Knockout.js 是MVVM架构的代表性实现。
这些工具提供了响应式数据绑定、指令和组件等功能,使开发者更容易构建可维护、可扩展的前端应用。
MVC(Model-View-Controller)是一种常见的前端架构模式,它将应用程序分为三个主要组成部分:模型(Model)、视图(View)和控制器(Controller)。这种模式旨在提高代码的可维护性、可扩展性和可重用性。模型和视图通讯通过控制器进行单向通讯。
MVC和MVVM其实区别不大,MVC中的C(Controller)演变成了MVVM中的VM(ViewModel)。VM并不是完全取代了C,只是在MVC的基础上增加了一层VM,弱化了C的概念。
MVC强调的是单向通讯,用户与视图交互通过控制器进行,而模型与视图之间的通讯通过控制器进行。这样的分离使得每个组件的责任清晰,但也增加了组件之间的耦合度,因为控制器需要知道视图和模型的具体实现。
在选择使用MVVM还是MVC时,可以根据具体的项目需求、团队经验和技术栈来进行选择。MVVM适用于需要大量数据绑定和复杂交互的场景,而MVC适用于简单的项目或者需要更灵活控制视图更新的场景。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。