[原创]Backbone源码分析-MVC模型

作者:nuysoft/高云/nuysoft@gmail.com

声明:本文为原创文章,如需转载,请注明来源并保留原文链接。

Backbone0.9.1源码分析分析系列

jQuery1.6.1源码分析系列

 

代码混乱

 

前端攻城师是个新兴的职业,一直以来前端开发面临着以下的问题:

  • 数据模型、业务模型不清晰
  • 代码代码复用率低,很多时候是Ctrl-C/V
  • 代码可读性和可维护性低
  • 难以满足需求的变化,特别是前端需求的频繁变化

jQuery在一定程度上改善了这种状态,解决了原生JS代码写起来繁琐的问题,但jQuery毕竟是一个以DOM查找和操作为主的库,这样的定位使得jQuery的大型前端项目中只能作为底层库使用,应用代码依然是杂乱无章,不得不依赖于攻城师的技术水准和职业素养。

而MVC模型通过细分模型、视图、控制器的职责,约定开发方式,让代码开发和管理变得条理、清晰。JS应用程序的本质是事件驱动,而MVC适合于事件驱动的场景,两者不谋而合。MVC在大部分语言的框架中都有实现,JavaScript虽然在这方面起步较晚,但随着前端和JS越来越被认可和重视,JSMVC框架的出现成为必然。

Backbone正是一个优秀的JSMVC框架。

 

传说中的单页面应用程序OPOA

 

在JS半死不活的年代,面临着随时被Flash吃掉的恐惧和各种市场唱衰,以及大公司富客户端产品的竞争,像Sun的JavaFX、微软的Sliveright,AJAX的异步请求和动态加载,可以说是力挽狂澜,有着拥立之功。

在AJAX被发掘之后,编写类似桌面程序的单页面应用程序OPOA“似乎”成为了可能,但是随后发现不能支持浏览器历史的前进、后退、收藏,使得OPOA成了各种DEMO秀,一直没有流行起来。

直到对URL hash的挖掘(location.hash),OPOA才变得可行。hash虽然不会在请求时传给服务器,但是在浏览器中,改变hash却可以前进、后退、收藏(在低版本的IE中可以通过iframe实现)。

hash驱动正是Backbone事件驱动模型中一种,在某些应用中可能是最重要的一种。

Backbone还有模型事件驱动和视图事件驱动, Backbone也不仅仅应用在OPOA中,在后边的章节将逐步介绍。

 

还不够完美

 

还有模块依赖、动态载入、模板等等需要去研究和学习,这些概念和框架已经不是什么新鲜事务了,但是如何将各种专注的库、框架、工具集成,变成完整、可靠、稳定、高效开发、可以成熟应用的系统解决方案,是前端领域需要继续研究和实践的课题。

我也是刚开始接触和学习,有感于最近这些知识受到的冲击,罗哩罗嗦的写了这些。下边开始分析我对MVC在浏览器中应用的认识。

 

MVC的优点和缺点

 

MVC可以简化重构、解耦合、提高代码复用、适应变化、易读、较少维护代码、提高可维护性,因为是结构化模块化开发,还可以实现代码自动生成。但是MVC也会导致复杂度上升、运行效率下降。

真的解耦了吗?只是尽可能的解耦,事实上也不可能完全解耦。模型与视图的关系在实际应用中的关系可能更加复杂,视图也不仅仅负责渲染、交互,还可能需要模板引擎、数据解析、适配等等。

为了更好的分析JSMVC的实现,我们先对MVC在JS中的职责进行梳理。请看下节 Backbone源码分析系列之JSMVC

posted on 2012-03-14 09:14  nuysoft  阅读(8277)  评论(2编辑  收藏  举报

导航