dljia
  • 前言
  • es6
    • promise
    • 箭头函数
  • http相关
    • ajax请求中contentType和dataType
    • async和defer的区别
    • cookie、session和token
    • http协议介绍
    • http缓存
    • 转发和重定向
  • js
    • 1-js深浅复制
    • 10-节流防抖
    • 11-Promise常见手写
    • 2-js函数值传递
    • 3-js原型链详解
    • 4-js基础讲解this篇
    • 5-call、apply和bind
    • 6-js中的继承
    • 7-闭包与立即执行函数
    • 8-js事件循环
    • 9-js模块化
  • react
    • React-diff
    • React-fiber
    • React组件设计规则
    • mvc与mvvm
    • react-router
    • react懒加载
    • redux
    • setState源码分析
    • webpack+react从0项目构建
  • ts
    • Typescript编程书籍导读
    • 体操基础
  • 其他
    • gitbook简易配置教程
    • gitbook转pdf电子书
  • 微前端
    • pnpm
    • qiankun
    • single-spa源码分析
    • 几种微前端架构的选型
  • 转载
    • interview-1
    • interview-2
    • interview-3
    • 经验好文
  • 项目经验
    • 23年总结
    • [Arkts 学习笔记](项目经验/Arkts 学习笔记.md)
    • Grafana插件
    • JSDoc
    • electron-builder构建的安装包,安装时通过nsis脚本自动导入注册表
    • overflow-yautohiddenscroll和overflow-xvisible组合渲染异常
    • webpack
    • 前端工程化
    • 前端性能优化思路
    • 前端性能监控工具
    • 前端架构
    • 前端登录流程
    • 前端监控原理
    • 团队管理
    • 基于node实现简单server
    • 如何对业务进行深挖
    • 如何拉齐横向
    • 如何画图
    • 如何记录
    • 组件库
Powered by GitBook
On this page

Was this helpful?

  1. react

mvc与mvvm

PreviousReact组件设计规则Nextreact-router

Last updated 2 years ago

Was this helpful?

前言:本篇文章并不适合初学者阅读,MVC(Model-View-Controller)与MVVM(Model-View-ViewModel)都是一种软件设计模式。没有实际项目经验的人看了也不会理解很深。


我们可以思考下当页面种一个url输入后到页面展示得简单过程

页面url输入==>浏览器向后台service发送请求==>后台服务操作数据库==>计算数据结果返回==>页面读取响应结果展示

根据这个过程我们可以大体上将程序软件分为几个层级

  • Model-> 数据层

  • controller -> 后台逻辑控制层

  • view -> 视图层

介入用户得操做就是如下

学java得人都知道 java的初级项目一个个都是mvc的典型,项目目录分的清清楚楚,做多了就会明白mvc模型缺点优点都很明显,优点就是快,小项目开发起来结构清晰。缺点就是业务逻辑代码不容易拆分,要么就是view层太重,一页代码上千行,要么就是controller层和业务逻辑绑定的太厉害,每次需求变更改动的代码量巨大

以上问题其实并没有什么良好的解决方案,需求变化及增加还是会导致大量的改动。直到mvvm模式的出现

MVVM将这个层级分成了这样

  • Model-> 数据层

  • View ->视图层

  • ViewModel -> 视图模型层

从个人的角度来说,modal层和VM层其实中间也是存在controller层的。甚至随着业务复杂度上升中间还会掺杂着基于node的数据中台,做进一步的数据加工处理

MVVM中 V层和VM层进行着双向数据绑定的关系,这种手段被广泛应用于react、angluar以及vue中。尤其是使用redux mobox vuex 这种分层关系就会显而易见的显示出来。

这么做的优势特别明显就是前后台分离的比较明显,提高大型项目工作效率。后台处理的业务逻辑更少,更关注性能上的提高而非业务逻辑。甚至对于一些项目后台管理项目controller层被弱化到只起到了查询数据库表的作用。再复杂一点的也可以将业务逻辑扔到node中台,再保证前端少请求的同时,将几乎全部业务逻辑交给前端人员统一处理,方便管理业务及扩展

mvc