博客首页|TW首页| 同事录|业界社区
2011-05-18

摘要

本文详细说明了使用 flashdevelop 基于 Robotlegs flash框架完成一个Hello World示例的 教程,这个示例包括完整的MVC(及Service)。 本示例可以 下载源代码

正文

开始之前

本文已经假定你具备下面的知识:

  1. 阅读过类似于 Essential Actionscript 3.0 这样的书籍,对于Actionscript语言和flash基本显示体系、事件等有一定了解
  2. 能够较熟练地使用 flashdevelop flash IDE
  3. 阅读过 Robotlegs 的文档 Robotlegs Best Practice

下载相关的库

  1. 下载 Robotlegs 相关的swc库,可以从 http://downloads.robotlegs.org/robotlegs-framework-v1.4.0.zip 下载
  2. 解压后,在bin目录下有个 robotlegs-framework-v1.4.0.swc 以及libs目录下有个 SwiftSuspenders-v1.5.1.swc
  3. 上面两个swc就是我们需要的

建立项目

  1. 打开 flashdevelop
  2. 建立一个名为 RobotLegsHelloWorld 的AS3 Project
  3. 将上一步中的两个swc拷贝到新建成项目中lib目录下(IDE左侧的文件结构列表中)
  4. 在拷贝好的文件上点击右键,选择Add To Library,将两个swc都加入到library中

这时基本的结构就好了,我们开始写代码。

定义需求

这个例子是个完整的说明 Robotlegs 框架的例子,所以会涉及到框架的各个主要部分,包括Model, View, Controller,为此 我们定义了这个例子所要完成的需求如下:

用户登录系统的过程,包括:用户输入名字和密码,提交表单,后端进行验证(简化起见,不作真正的验证),并返回成功与否的结果。

整个结构

根据上面的需求定义,我们可以有下面的组织架构:


具体的各个角色(actor)的功能,参考代码中的注释。

需要说明的是:

  1. 在理解代码和框架时,最好了解如单例模式等设计模式
  2. 对于 依赖注入 有一定理解
  3. 对于 MVC 有一定理解

其它应该还是比较容易理解的。

总结

从最开始使用 pureMVC 到这个项目使用 Robotlegs ,两个框架都挺好的,在整个项目的进展中,更加觉得要控制住代码质量并不 取决于框架本身,而是取决于使用框架的人,各位程序员们要加油了。

另外,也可以参考我的另一篇博客 RobotLegs简介 .

下载原文

可从 此处 查看或者下载。

下载源代码

可从 下载源代码 查看或者下载。

2011-05-10

摘要

本文简单地对 pureMVC 和 robotlegs 进行了对比,并且较详细地说明了 robotlegs 各个角色的职责, 以及使用 robotlegs 的常见的注意事项。

正文

最近开始前端的开发,即flash开发,之前使用的是 pureMVC ,也写过一篇关于 pureMVC notification 的博客;而这个项目的开发是使用 robotlegs , 所以,这篇博客主要是基于过去这几周的工作和自己的理解对这个框架的一些简单 说明,希望对看到的朋友有益。

整体感受

做前端的开发不多,与后端相比一些UI上的处理、事件的处理等差异比较大,但是 编程的思想(如解耦、接口编程而非实现编程等)还是一致的,与后端比没有多大 可比性,所以我想简单地说明我对于 pureMVCrobotlegs 二者的一些 感受。

pureMVC 是基于 notification 的一个MVC框架,主要目的是为了各个部分 能够解耦,当然它也基本上能够做到。 robotlegs 则是基于 message 以及 message 携带的payload(数据等)来实现解耦。 robotlegs 是基于pureMVC 的 思想,但是在一些方面更加出色,例如消息的强类型,依赖注入方式,消息携带payload 等等。

当然,任何一个好的东西(语言、框架等)最终还取决于用的人,语言和框架本身并不能 保证用户的代码清晰、解耦等,当然它只是尽可能地做到这点。

关于robotlegs


还是一个MVC的框架,它的几个角色的主要功能有:

  1. M(odel): 提供数据的存储(与后端数据库表的映射),操作等

  2. V(iew): 呈现给用户,提供对用户操作的响应等

    • 通常一个V对应于一个Mediator
    • Mediator的职责是转发来自V的事件到整个框架,或者接收来自框架的事件并更新V(通常通过调用V的方法)
  3. C(ontroller): 业务逻辑,处理M和V之间的连动

    • 通常对应于一个Command
    • Command的职责有,实现业务逻辑,发送事件等

除此之外, robotlegs 还有一个角色是 service , 主要职责是提供一些获得数据的服务接口, 它本身并不存储(和model的区别)数据和提供数据的操作。

为了更好的说明起见,我想以一个员工考勤系统为例来说明各个角色的职责。

为了简化起见这个员工考勤系统只有如下功能:

  1. 提供一个界面供员工登录
  2. 提供一个界面供员工点击来作为考勤的时间

后端也可以很简单,例如有用户表User(id, name), 用户考勤表CheckInRecord(user_id, checkin_time), 那么前端使用robotlegs的结构可以采用:

使用robotlegs的注意事项

  1. 注意各个角色初始化的顺序(顺序关系到注入及事件处理的逻辑)
  2. 注意注入的使用(提前初始化)
  3. 其它的可参考 Best Practice

总结

还是一句话,框架或者语言只能在最大限度上保证用户代码的清晰、可读、解耦、可维护等(例如python语言),但是 最终的代码质量还是取决于用户本身(程序员),所以一些编程的哲学和模式才是更为关键的(大致可看下 Code Complete 、 Design Pattern 等)。

最近一直在看 Code Complete ,一句话让我感受非常深,大致意思是说 写代码的过程就是复杂度管理的过程(Complexity Management) , 这一点之前的认识不够,我推荐给看到的朋友,将它和 DRY 原则一样牢记在心吧。

下载原文

可从 此处 查看或者下载。