@author:吕婉琪
对于几乎所有的新技术,初次接触时首先要弄清楚的问题就是WHAT,WHY。也就是这个东西是用来做什么的,为什么要使用。对于前端MVC,我们也可以按照这样的思路进行初步了解。
什么是MVC
最初听到这个名词是在小学期的网站开发大作业时。在实现网站时可以选择比较容易理解的三层架构(数据——逻辑——表现),也可以选择MVC架构。但是当时我们组没有选择MVC架构,也失去了一次了解的机会。因此之前我对MVC的了解就仅限于它是一种可以应用于网站开发的比较高端的架构,并无其他。
MVC的定义是很容易找到的,比如这一种:“MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑,MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。”(引自百度百科)
而前端MVC,我个人简单理解,就是把WEB前端的一些对数据、DOM节点的操作进行抽象化,将逻辑和数据分离开。而这种抽象的对应关系就是定义中提到的“映射”。对于前端MVC来说,VIEW应该就是网页,也即HTML.CSS文件的组合;而MODEL则应该是我们指定的一种处理数据的标准;CONTROLLER是沟通这两者的桥梁,对一个事件做出响应,返回网页或网页模块,本身不涉及数据操作。
为什么用MVC
从上面来看,MVC似乎是一个比较难以确切理解的东西,使用起来也不是那么方便(尤其进行小型项目开发时,比如小学期WEB前端的大作业照片展示网站,不采用MVC架构反而会更简单,而且代码写起来也比较好理解),而且听起来在开发时可能会比较费时,繁琐,那我们为什么还要使用它呢?
我觉得最重要的原因是数据和逻辑分离。这使得数据的更改完全不受限制。原来那种写法,基本上小小的一改极可能“伤筋动骨”,在调试时就是噩梦。另外,采用MVC架构比较方便的一点是,在不需要改动模型的情况下,基本上相当于“一劳永逸”。开发的人可以随心所欲地去对网页视图做更改而不必担心逻辑的交互。而且这种架构可以使得调试和复用都变得简单。
怎么用MVC
使用MVC可以采用两种方式:自己封装三个部分,使用现有的框架。
自己封装应该是灵活度比较高的,可以完美地与项目贴合,但是可能这个架构仅适合这一个项目。时间和技术成本比较高。
使用现有框架比自己封装要方便许多,但是局限性在于存在一些功能无法很好地填充到现有框架中的可能性。一些现有的框架如backbone,Struts,WebWork,Spring,JSF,Tapestry,ASP.NET,Angular,ember都是比较常用且受欢迎的。