架构是对客观的妥协

  • 应用要处理的事务太多,一个人开发不过来,需要分离 view 和 model,一个来处理 view (这个人成了前端),一个来处理 model (这个成了后端)
  • 一台服务器撑不起 model 和 data 的操作,那么就分布式吧 balabala

前后不分离-MVC

  • MVC 的本质就是分离界面和逻辑
  • 后端渲染生成 html(ajax 诞生前都是这样)。此时的 view 的改变无法脱离 model

modal

  • 应用逻辑层的对象,我理解为业务对象。如 Account、Order,包含业务逻辑方法、操作,如 Account.sendEmail()、Order.calculateTotal()
  • 介于数据库和 controller 之间,可通过 SQL(结构化查询语言) 与数据库进行交互

view

视图,modal 的数据的展示

controller

  • 也叫 View Controller,视图控制器,注意与整个应用的集中控制器 Application Controller 区分开
  • 控制数据流向 modal,并在数据变化时更新 view,“用户发了个 xx 请求,带了参数 {a:xxx},哪个 B model,找你的,参数也给你,你处理好了把数据还给我,我还给 view”
  • controller 层越薄越好,业务逻辑尽量放到对应的 model 下而不是放 controller 处

上图中的 model (甭管它是 Java Bean 还是其他的名称),也可以直接将 model 数据回传给 view,不一定需要 controller 经手

前后分离

mvp mvvm 等

参考

https://www.zhihu.com/question/22886622/answer/48378638
https://www.runoob.com/design-pattern/mvc-pattern.html
https://growth.phodal.com/#mvc