对于一个一线以业务交付为主要工作内容的软件开发者,如果不是自我内驱学习型选手,平时其实很少接触到模式、框架这些东西,就算知道也是一漂而过,毕竟两周一迭代交付的代码是很难去思考这么多也很少用到的,作为一个一线开发,过度开发、贴金也不是一个好的软件实践。
想写一些关于模式或者框架的闲言碎语纯粹是因为项目中看到以Controller命名文件的这种东西,第一反应是这个FE Developer难道是一个后端转过来的,然后想如何能更清晰的阅读这份代码,基于这个想法,想把脑中的一些说不清理还乱的概念归档一下,有点小洁癖。这个小记主要是整理MVC设计模式的一些思考。
MVC设计模式还是框架?
MVC是Model-View-Controller的简写,Model负责数据层,View负责视图层,Controller负责业务逻辑,是Model层和View层的交流的控制器。
MVC框架,我接触的第一个Web框架是Ruby on rails,是一个典型的MVC框架,代码组织十分清晰,上手也很快。其中Model,即数据存取层,该层处理与数据相关的所有逻辑,比如存取,校验;View层,采用框架自带的erb模板,该层处理与表现相关的逻辑,比如页面控件展示交互;Controller层,业务逻辑层,该层调用模型层的方法完成数据逻辑的变更以及调取对应的模板文件,可以看作是Model层和View层的桥梁。
前端接触的比较多的是库,曾经一个jQuery横扫前端页面。一般库中代码的组织会牵扯到设计模式,jQuery当中很多模块都是有固定的设计模式的。像现在比较流行的Vue,就是典型的观察者模式的应用。
Vue框架,网上说是一个典型的MVVC的模式,前端其实蛮少会说框架,像jQuery、underscore、lodash都是说其为库,但是Vue可以说框架,我理解还是代码组织方式上有一定的模式了,尤其是借助了单文件模板的插件,Vue应用已经有固定的样板文件了,数据写在哪里,业务逻辑写在哪里,视图层逻辑写在哪里,都是一清二楚的,上手难度大大降低了。React这一点我觉得还是太灵活,样板文件没有很固定,开发者还是比较自由的。
模式与框架,模式可大可小,框架一般比较大,也比较完备,内部会用多种模式,但会有一种大的模式横跨其中作为典型特征。对于模式还是框架我理解知道这个差别就好了,真实训练自己的代码能力还是多了解一些模式设计的典型case比较实用一些。所以,MVC设计模式还是框架,我理解是框架已经是一个现成的软件产品了,比如Ruby on Rails, Vue,其中选取其最主要的设计模式作为软件产品的特征,从而用户定位软件更加清楚,而设计模式是一种方法论,该方法论需要在实践中学习和锻炼从而掌握的。
小结
其实讲这些东拉西扯的话,其实只是想表达一个意思,就是软件,尤其是包,库,框架这些,内部是有很多模式的,通过这些模式,软件开发者有一个很清晰的脉络去管理数以万计的代码,我们有时候在阅读这些代码的时候也要有意识的去寻找这些模式脉络,才能避免只见树木不见森林的情况。