Chinaunix首页 | 论坛 | 博客
  • 博客访问: 224576
  • 博文数量: 31
  • 博客积分: 2086
  • 博客等级: 大尉
  • 技术积分: 295
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-26 08:46
文章分类

全部博文(31)

文章存档

2011年(4)

2010年(27)

分类: 系统运维

2010-08-21 15:05:30

模块化的定义与原理

模块化的定义

模块是包含了一个IFlexModuleFactory类工厂的可动态加载的特殊类型的swf,它允许一个程序在运行时加载代码并创建类实例。

 

模块化的原理

Flex应用程序是以swf形式发布的。Swf形式的文件分为两种类型,如下表所示:

 

类型

特征

特点

Application

最外层容器以开头

可以单独执行

Module

最外层容器以开头

不可以单独执行,必须被ModuleLoader组件加载后才能执行

 

在完全采用Flex作为客户端技术的web系统中,由上述的ApplicationModule构成全部界面。

 

模块化的作用

1) Flex模块化可分离应用程序代码到不同的swf文件上以减少加载时间和文件大小。

 

2) 多界面效果

Flex技术中,通过模块化实现多界面效果,每个界面对应一个Flex模块。通常需要定义一个Application类型的界面作为主界面,在其上定义子界面的容器(ModuleLoader组件)。然后定义多个Module类型的子界面,在主界面的ModuleLoader组件中,动态加载Module类型的子界面以实现多界面切换。

 

模块化程序的优点

使用模块化开发有如下优点:

 

1. 主应用程序开始时不需要马上下载模块,应用程序会根据需求载入和卸载模块。

2. 由于每个模块独立于其他应用程序模块,当需要改变一个模块时,只需要重编译这个模块而不是整个应用程序。

 

技术要点

创建Flex模块

4.1.1 基于mxml的模块

 在你的项目右键->新建->MXML模块

代码如下:

xmlns:fx=""

           xmlns:s="library://ns.adobe.com/flex/spark"

           xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="400" height="300">

   

       

   

4.1.2  基于As的模块

代码如下:

import mx.modules.Module;

public class G extends Module

{

Super();

}

加载Flex模块

4.2.1使用ModuleLoader加载:

x="198" y="84" width="300" height="300" url=Contact.swf>

 

4.2.2使用ModuleManager加载

代码如下:

import mx.modules.IModuleInfo;

        import mx.modules.ModuleManager

private function creationHandler():void

            {

                 var _moduleInfo:IModuleInfo;

                _moduleInfo=ModuleManager.getModule("Module2.swf");

                _moduleInfo.load();

            }

 

模块化与运行时共享库的比较

运行时共享库Runtime shared libraries (RSLs) 是可被下载并缓存到客户端的一些文件。当 RSL 被下载存留在客户端后,其他应用程序就可以访问缓存的 RSL 资源了。应用程序载入两种 RSLs :未签名和签名的。未签名的 RSLs ,比如标准的和跨域的 SWF 文件,存储在浏览器缓存里。签名的 RSLs ,这是经过 Adobe 签名过的,扩展名为 .swz ,存储在 Flash Player 缓存中。正如其名, RSL 被称作动态链接库,在运行时被载入。静态链接库是 SWC 文件,通过编译 器的library-path include-libraries 编译进应用程序。采用静态链接的应用程序 SWF 会产生比较大的文件以及更长的下载时间。 使用 RSLs 的应用程序载入时间短且文件比较小,而且提 高了内存使用效率,只是在开始需要花点时间下载 RSLs RSLs 的强大体现在多个应用程序共享公共代码时,因为 RSLs 只需要被下载一次,多个应用程序动态链接到相同的 RSL ,访问其中已经缓存在客户端的资源。虽然 RSLs 的巨大优点是缓存到客户端,但是它并不考虑库中的哪些类被真正用到,就把整个 RSL 库都下载来。

Modules RSL 类似,只不过提供了另外一个方法分离应用程序代码到不同的 swf 文件上以 便减少下载时间和文件大小。使用 Modules 的好处是,它不像 RSLs ,主应用程序开始时不需 马上下载 modules 。应用程序会根据需求载入和卸载 modules 。使用 modules 的开发进程中还有个好处:由于每个 modules 独立于其他应用程序 modules ,当需要改变一个 modules 时,你只需要重编译这个 modules 而不是整个应用程序。

阅读(5165) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-24 14:51:26

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com