[原创]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   nuysoft  阅读(8278)  评论(2编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异

导航

< 2012年3月 >
26 27 28 29 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7
点击右上角即可分享
微信分享提示