接触过好多语言,无论哪一款新出的语言都坚持宣称自己是简洁,易懂,高效。当然这一切都不重要,你要知道程序猿都很非常懒惰的一种动物,关键是我所接触好多的新语言都不是他们所说的那么易懂,因为无论多么易懂的东西其中总会有其语言设计中的哲学概念,甚至我们装逼点可以认为他是一种精华。类似于JS(即Javascript,虽然身为一名前端设计者,我非常不爽这种仅以文件后缀名来称呼这么伟大的一门语言,但是无奈省力省时之下你明白我说的是什么意思就好了。)其中的闭包,手动切换上下文等,让很多Fresher不知所云。
我一直认为计算机语言泛化来看不过一种工具而已,无论是C/CPP,JAVA,RUBY等等的语言,都是一种工具,何必需要过分深入去研究?正如你不会过分去研究如何使用eclipse一样,当然如果你想以一个科学家的心态去探讨感受语言之美甚至其艺术,那么你大可以去找一本经典之作去翻读加上几年的实践必然可以通读某某编程语言。但是你所涉及的一般是高级语言,过分地挖掘它有时候的确让我们相当痛苦,甚至失去了开发产品的激情。我认为我们需要去做的不过是如果去用他。
好吧,扯了这么久,回归到题目上,关于Javascript的MVC模式,如果你是从搜索引擎找到这篇文章的,那么我假定你是有心故意搜索关键词javascript+mvc证明你已经有过一定开发JS经验的程序猿,而且想让自己的程序看上去更专业,更装一点()。文章系列会一直参照《基于MVC的Javascript Web富应用开发》一书的思想展开(因为我也在学习当中,加上本人比较懒惰不能保证是否能够一直连载下去),理性和感性地去描述,正文如下:
MVC IS WHAT? 如果你上大学稍微听过课,我觉得就算你没听过课,考试前一晚疯狂复习也会被背到MVC的概念。
M - MODEL(模型)
V - VIEW(视图)
C - CONTROLLER(控制器)
好的,这个不需要你去背(我本人同时也很反感去硬性记忆),当你真的会用的时候你自然知道是什么。我相信MVC大家听得多,但是对于一般对项目接触不深的人来说MVC仅仅是熟悉于耳朵,尤其是学生。而这里为什么我们需要引入MVC模式呢?当然我怎么可能会和你说为什么,这么简单的问题你自己去搜索吧。而在一般由MVC模式构建下程序,事件发生的过程是这样的:
1.用户和应用产生了交互
2.控制器的事情处理事件被触发了
3.控制器从模型中请求数据,并把数据提交给视图
4.视图再把数据呈现给用户
换在一般网页交互中,我们可以这样理解:
1.用户双击了表格中的数据
2.触发了双击事件,数据变成可编辑的状态(这个时候会出现一个文本框,但是里面还没有数据)
3.第2步的双击事件从存放数据的模型中把数据放到文本框中,形成一种数据由不可编辑到可编辑的一种效果
回到MVC这三个单词中去,个人觉得模型这个词其实真的不能简单的从字面上理解,这可能是中国人的思维问题吧。在网页设计当中,模型的具体作为对象来使用。假如你有一个表格,里面每个<tr>作为一个数据项的话,那么我们就可以简化地认为<tr>是属于具体的一个模型,或者说<tr>是我们所建模型的一种表现形式,其中模型存储着每个<tr>里面应该含有的数据项,例如title,editor,time等等,与此同时,模型也同时含有对数据库的CRUD操作。OK,有人会疑惑对于数据的具体操作不是由控制器来完成的么?这里我们要区分开来的是,控制器的作用是用来连接视图和模型的,譬如控制器中的router(路由功能,即我们看到的url地址后#符号后面的不同标示符对应不同的数据定位),根据视图的变化来作出反应,这个反应就是通过调用模型中的方法来实现的。视图,很明显就是我们看到的页面,这个就不多作解释了。
这篇文章只是作为一个引子,里面并没有过多讲述MVC的具体内容,之后会继续更新有新的文章。