聊聊MTV模式——以“优美”之名剪除JSP技术

新年伊始,不幸遭遇职场风波。不得不从JAVA WEB 阵营转投PYTHON WEB 阵营,不禁暗自唏嘘,幸好老子练过。

1. 从MVC/MVP说起

在众多WEB架构中,MVC模式一直是所有特别是JAVA WEB开发者所尊崇和继承的模式。虽然如今衍生了许多诸如MVP和MVVM等其他模式。但是Model(模型),View(视图)和Controller(控制器)一直是众多开发人员梳理和解耦WEB应用的准则。

特别在Spring boot诞生之后,你仅需要写三五行的代码就可以运行一个高可复用的MVC结构,这也真正意义上体现了MVC设计的初衷,即让开发人员专注于业务。特别是VIEW的解耦,更是让前端技术表现的淋漓尽致。

MVC结构的总体流程就在于由核心控制器匹配以及分发用户请求URL,model层负责根据业务逻辑组装数据,再在view层绑定以及渲染数据。

在以Spring作为基础框架的项目开发中,URL的匹配过程是分散到controller的方法体(对于开发人员来说),以注解@RequestMapping形式标注。而model层次中间件众多,这里不详细提及。而对于大部分开发者来说,JAVA WEB开发所使用的view仍旧以JSP技术来表达,这曾经是许多后端JAVA开发者的骄傲,然而随着技术更迭这曾经的骄傲也渐渐安然无光,甚至暴露诸多问题,比如与js,groovy等前端其他语言的交互问题,支持手续繁琐等问题。以至于Spring boot官方并不推荐JSP技术。

2.  芸芸WEB技术栈

WEB应用开发从来就不是JAVA的独有的,没中语言都有丰富的技术栈来实现WEB应用,典型的诸如node.js的Express框架以及Python的Django框架,都是十分优秀的WEB应用构建框架。那么在没有JSP的世界里如何构建复杂的view?不得不说许多人采用JSP的根本原因是技术上的贫穷限制了你得想象。在没有JSP的世界里我们还有更丰富多彩的模板引擎啊!

3.  模板引擎(Templates)

模板的Templates就是我们要说的MTV模式中的T,所谓模板引擎就是开发人员预编辑模板后,由模板引擎转译并绑定数据到DOM。良好的模板引擎能够简化dom构建及数据绑定过程,使得代码逻辑表现得更为优美。

目前在Spring boot开发中,主要以Thymeleaf和FreeMaker模板引擎为主,其基础仍旧是由JAVA 虚拟机。而在nodejs的Express框架中,比较推荐实用的是jade模板技术,jade模板基本消除了HTML本身的标价签化特点,虽然对于格式缩进要求更为严格,但是却令dom文档更为清晰可读,配合优越的IDE工具,其开发效率也是不可小觑。而Python的Django框架中所使用的模板技术来源于Django本身提供,模板本身仍旧采用HTML语言,数据则由定位和绑定算法绑定到dom,而非jade模板的虚拟化dom方式,应该说目前看绑定算法确实更为优越,这也许就是前端vue框架反克REACTE框架的一个原因吧。

4.  再回到语言

其实MVC模式也好,MTV模式也好。都不是什么稀奇古怪的东西,反而对于我这样开发过JAVA WEB,php,ASP.NET ,Node.js Express 和Python Django的我来说更多是对于现代计算机语言发展的感悟,对于从面向对象到面向函数的转变,最大的体会就是大家所面临的共同问题就是如何将极大的数据表现到view当中,这里面所拆分出来的问题已经散落在各个技术过程当中,但是要一门语言应对,那么这门语言必须兼具面向对象和面向函数的能力,这或许也是Google选择kotlin的一个原因吧,二这都是现代计算机语言最优秀的特质,好的融合自然让一切事半功倍。

你可能感兴趣的:(聊聊MTV模式——以“优美”之名剪除JSP技术)