来源:鹅是程序猿

toutiao.com/i6763420080542843399

  • 所以V层是否还有必要?

  • 所以我认为目前的多终端环境下,新的划分方式如下:


标题是不是有点耸人听闻,不过我并不是标题党。考虑到谈论这类大而虚的东西(比如最好的语言)容易引起争论和被喷,所以还请诸君带着看戏而不是庭辩的心态来看待本文。

从webform过度到mvc,我曾经惊叹mvc革命性的变革。过去,在创建应用时通常会按MVC各建一个文件夹,每个文件夹就是一个模块。MVC三者的职责是这样的:

1.Controller绑定到某个路由上,接着处理请求参数,然后创建在整个请求中可见的对象,并进行一些业务逻辑上的工作。期间会从数据库中构造Model,也有可能新建/修改Model后将它们保存入数据库。最后,Controller会通过View响应用户的请求,或者返回重定向的报文。基本上业务逻辑都是实现在Controller里面的。(下文为了阐述方便,都以“业务逻辑”特指Controller中的业务逻辑)

2.每个Model往往对应数据库的一个实体。Model类除了装数据之外,还提供了跟自己身份相关的一些方法,比如User类提供authenticate方法以用于验证密码。Model对象通常还会负责检验构造自己的参数是否正确。

3.View负责使用给定的参数渲染模板,并作为响应返回给用户。View一般是由该框架提供的模板语言写成。

但是用mvc做过N个项目之后,我越来越发现这种方式在某些方面有着不可忽视的弊端。尤其在现在多端共享数据的web环境,类似于MVC这样的组织方式已经显得过气了,不同的客户端需要不同的V层,很多时候pc端用v层,h5端,小程序段、App端都有自己的V层,然后数据通过Controller做成api的形式输出数据。

所以V层是否还有必要?

最近的项目中,Controller直接就是输出一个JSON数据,这么一来,传统的View的扮演的戏份还剩多少似乎,我也一直思考如何如何在我们的项目组中进行改进。

过去,View通常由三部分组成:html代码,控制流程语句,渲染时的上下文。如果提供的是JSON格式的模板,那么View的前两部分基本不需要了,只需要渲染时的上下文。可是这么一来,为什么我还需要渲染一个JSON模板,目前的前端框架vue,React可以很方便的实现数据渲染。

所以我认为目前的多终端环境下,新的划分方式如下:

  • View消亡了,PC端可以回归原始的html页面。

  • Model分离成两层,一层负责数据实体,另一层负责数据的访问。

  • Controller分离成两层,一层负责绑定路由,另一层负责业务逻辑。

以上是我个人对mvc的看法,大家可以讨论或给出更好的方案。

为什么我不再推荐使用 MVC 框架?相关推荐

  1. 为什么我不再使用MVC框架

    在我最近的工作中,最让人抓狂的就是为前端开发人员设计API.我们之间的对话大致就是这样的: 开发人员:这个页面上有数据元素x,y,z-,你能不能为我创建一个API,响应格式为{x: , y:, z: ...

  2. mvc如何嵌套第三方页面_长文观点丨为什么我不再使用MVC框架?

    原创: 张卫滨 译 Jean-Jacques Dubray是一名资深工程师,他最近引入了一个新的模式:状态-行为-模(State-Action-Model,SAM).SAM是一个函数式反应型的编程模式 ...

  3. 为什么我不再使用MVC框架?

    Jean-Jacques Dubray是一名资深工程师,他最近引入了一个新的模式:状态-行为-模型(State-Action-Model,SAM).SAM是一个函数式反应型的编程模式,它致力于简化数据 ...

  4. 为什么我不再使用 MVC 框架?

    Jean-Jacques Dubray 是一名资深工程师,他最近引入了一个新的模式:状态-行为-模型(State-Action-Model,SAM).SAM 是一个函数式反应型的编程模式,它致力于简化 ...

  5. 【Java学习路线之JavaWeb】Spring MVC框架入门教程

    文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...

  6. 写自己的ASP.NET MVC框架(上)

     开始 ASP.NET程序的几种开发方式 介绍我的MVC框架 我的MVC框架设计架构 回忆以往AJAX的实现方式 MyMVC中实现AJAX的方式 如何使用MyMVC框架中的AJAX功能 配置MyM ...

  7. 从MVC框架看MVC架构的设计

    尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点.本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些 ...

  8. Mybatis,Spring,MVC框架

    文章目录 @[toc] unit12-mybatis框架 MyBatis简介(了解) 什么是MyBatis 为什么要使用MyBatis MyBatis快速入门 准备数据,创建库和表 创建工程,导入所需 ...

  9. 写自己的ASP.NET MVC框架(下)

     开始 MyMVC的特点 介绍示例项目 关于URL路由 配置MyMVC框架 映射处理器(入口) 内部初始化 从URL到Action的映射过程 PageUrl的设计思想 多URL的匹配功能 解决老的 ...

最新文章

  1. 神策分析 1.16 版本上线场景库,实操方法论融入产品,全方位赋能多角色应用...
  2. jq html 多一个引号,为什么jQuery模板会为某些字符串添加双引号
  3. 坚果云开发团队分享高效代码审查经验
  4. Swift 必备开发库 (高级篇) (转)
  5. 管理感悟:如何提交问题的解决方案
  6. 计算机excel必备知识,excel常用函数大全
  7. MFC中MSChart控件安装使用
  8. Learning Premiere Elements 15 Premiere Elements 15教程 Lynda课程中文字幕
  9. c语言快速学习,怎么才能正确快速的学习c语言
  10. fgo国服登陆显示服务器错误,命运冠位指定安装失败怎么办 FGO国服安装失败解决办法...
  11. 初中学校计算机机房管理制度,学校机房管理制度
  12. 计算机网络管理员下午试题答案,(完整版)计算机网络管理员考试试题库和答案(13页)-原创力文档...
  13. NTC热敏电阻的主要技术参数
  14. Java的位运算符详解实例——与()、非(~)、或(|)、异或(^)
  15. 微信公众号文章链接正则校验
  16. Bath Body 純白花漾系列
  17. Linux--进程与任务管理
  18. 计算机二级考试office资料,2017年国家计算机二级office考试资料
  19. 从冰雪盛会的幕后赛场,看数字建设者如何保障大型赛事
  20. VBA怎样关闭工作簿和退出Excel

热门文章

  1. string类assign方法
  2. PDF 补丁丁 0.6.0.3282 版发布(修复内存漏洞)
  3. 【转】 最新版chrome谷歌浏览器Ajax跨域调试问题
  4. Android进程退出的方法
  5. CentOS 5.5高负载下,网卡会自动断开
  6. 海量存储之十八–一致性和高可用专题
  7. 簡單安裝軟件 GNU Linux
  8. Asigra无代理备份:“云”数据保护的先行者
  9. [RHEL5企业级Linux服务攻略]--第9季 Squid服务全攻略之高级配置
  10. Qt实现3D纹理渲染自由旋转空间立方体