[原创]Backbone源码分析-JSMVC

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

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

Backbone0.9.1源码分析分析系列

jQuery1.6.1源码分析系列

 

接上一篇MVC模型的讨论

 

JSMVC职责划分

M 模型

  • 业务模型:业务逻辑、流程、状态、规则
  • (核心)数据模型:业务数据、数据校验、增删改查(AJAX)

V 视图

  • (核心)视图:定义、管理、配置
  • 模板:定义、配置、管理
  • 组件:定义、配置、管理
  • (核心)用户事件配置、管理
  • 用户输入校验、配置、管理

C 控制器/分发器

  • (核心)事件分发、模型分发、视图分发
  • 不做数据处理、业务处理,即业务无关
  • 扩展:权限控制、异常处理等
  • C是JSMVC框架的核心,实现集中式配置和管理,可以有多个控制器

工具库

  • 主要是异步请求、DOM操作,可以依赖于jQuery等

 

JSMVC实现探讨

 

MVC的模型Model、视图View、控制器Control三个相互独立又相互联系,C作为其中的桥梁。MVC作为由来已久的成熟开发模型,已经有经典的实现可控参考,在浏览器和JS这个特定应用场景中,我们做如下探讨:

M模型自包含的,可以嵌套包含,不会主动引用视图和控制器;可以是简单的JSON对象/数组,也可以用组合模式Composite实现嵌套包含;

V视图嵌套包含的,可以用组合Composite实现;视图需要引用模型(M-V),一个视图引用一个多个视图,视图会收到模型的通知并自动更新,可以用观察者模式Observer实现;视图需要响应用户的交互,使用浏览器事件模型

C控制器作为MVC框架关注的核心,采取集中配置的策略(V-C);可以有多个控制器(C+C),用策略模式Strategy实现;hash事件驱动需要用到浏览器事件模型。

可以看到M模型和C控制器之间没有关联,一般我认为是不需要的;但是在有的框架中实现了M模型和C控制器事件的关联(比如公司在用的Magix),也是一种实践,可以参考。

 

上边的论述解析MVC在JS中定位,但是理解JSMVC如何运行的关键在于对事件驱动的理解。

 

事件驱动

 

在浏览器中JSMVC有三种事件驱动方式

1. hash驱动,通过popstate/hashchange事件驱动控制器(前边有过介绍,后续结合Backbone的Router和History详细讲解它原理、实现、技巧)

2. DOM事件,用来驱动视图(这个我们已经很熟悉了)

3. 模型事件(业务模型事件和数据模型事件),用来驱动模型和模型结合(这个后续结合Backbone的Model讲解)

 

今天就写到这里,下节介绍Backbone的架构、能做什么、不能做什么、以及还能扩展什么。

posted on 2012-03-14 09:14 nuysoft 阅读(...) 评论(...) 编辑 收藏

导航

公告