返回顶部
首页 > 资讯 > 精选 >Flex模块化应用程序开发的示例分析
  • 176
分享到

Flex模块化应用程序开发的示例分析

2023-06-17 15:06:20 176人浏览 安东尼
摘要

这篇文章主要介绍了Flex模块化应用程序开发的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex模块化应用程序开发如果你没有看过RogerGonzalez的Blo

这篇文章主要介绍了Flex模块化应用程序开发的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Flex模块化应用程序开发

如果你没有看过RogerGonzalez的Blog中关于模块(Module)的文章,那么你应该去那里了解一下Flex2这个特性背后的细节和想法。这里我不想过多地探讨为什么要这样,而是想要给大家展示一个使用了模块(Module)的简单的Flex程序,你可以从中获得启示。

模块(Modules)

模块(Module)是创建大型Flex应用程序的一个解决方案,它允许你将你的用户接口分割成许多分散的有各自用途的小块。例如(下面出自Flex2的文档),一个保险公司可能有数百个表单——针对于各个领域的,针对各种请求类型,以及针对各种应用等等。创建一个包含所有这些表单的Flex应用程序将会产生一个巨大SWF文件,还会有不少问题:

?应用程序越大开发过程越复杂;
?应用程序越大测试过程越复杂;
?应用程序越大部署过程越复杂;
?SWF文件越大加载时间越长

我的示例程序基于Flex2文档中的一个程序,但是我将它做了一些更改来说明几个常见的问题。这个例子展示了一个主程序和其它三个共享公有数据的模块(Module)。

其中一个设计要素是一个接口的使用,这个接口实质上是接口实现者和使用者之间的一个契约。这个例子将会说明我所说的意思。模块(Module)的接口部分虽然不是必须的但是却可以大大简化以后的开发和维护。比如,如果开发人员有一个小组负责报告部分,另一个小组负责图表部分,如果它们一开始用了接口,那么只要有需要,接口的实现就可以做足够多的变形而不会影响到工程结果。接口在模块(Module)中还扮演另外一个角色,我在下文中将会揭示这点。

模块(Module)是以<mx:Module>代替<mx:Application>作为根标签的MXML文件(或ActionScript文件)。你可以将带有<mx:Module>标签的作为一个程序来看,但是它不能运行。

这个示例有一个主程序文件以及带有一个接口的两个模块。打开主程序文件你会看到:

程序代码

<mx:Panelxmx:Panelx="10"y="41"width="169"height="500"layout="absolute"title="Modules"> <mx:Textxmx:Textx="10"y="24"text="Checkamoduletoloadit;unchecktounloadit"width="129"/> <mx:RadioButtonxmx:RadioButtonx="10"y="97"label="None"selected="true"  click="removeModule()"/> <mx:RadioButtonxmx:RadioButtonx="10"y="123"label="Chart" click="removeModule();loadModule('ChartModule.swf')"/> <mx:RadioButtonxmx:RadioButtonx="10"y="175"label="Table" click="removeModule();loadModule('GridModule.swf')"/> </mx:Panel>  <mx:Panelxmx:Panelx="187"y="41"width="500"height="500"layout="absolute"title="Module:{moduleName}"> <mx:ModuleLoaderidmx:ModuleLoaderid="currentModule"ready="readyModule(event)"  width="100%"height="100%"/> </mx:Panel>

***个Panel包含了控制示例中模块(Module)加载和卸载的RadioButtons。第二个Panel是使用<mx:ModuleLoader>标签加载模块(Module)的地方。注意那个id为currentModule的ModuleLoader,它有一个关于ready事件的事件处理器。当Flex模块化中模块SWF文件加载了足够多可以开始使用的时候,ModuleLoader就会分派ready事件(或者说ModuleEvent.READY)。

这里有一个readyModule函数,它在<mx:Script>块中:


程序代码

privatefunctionreadyModule(event:ModuleEvent):void  {  varml:ModuleLoader=event.targetasModuleLoader;   varichild:IExpenseReport=ml.childasIExpenseReport;  if(ichild!=null){  ichild.expenseReport=expenses;  }  }

注意ModuleLoader的child属性是如何转换为IExpenseReport类的。IExpenseReport是一个所有模块(Module)都实现了的接口。只要每个模块都实现了这个接口,它就可以很容易适应于应用程序。换句话说,想象一下当你需要创建另一个表单或者报告的时候它的用途。并不需要更改主程序为新模块添加IF语句,你只要在新模块中实现IExpenseReport接口它就可以在程序中***地运行。

IExpenseReport接口:

程序代码

publicinterfaceIExpenseReport  {  functionsetexpenseReport(ac:ArrayCollection):void;  }

每个模块(Module)都实现这个接口,定义各自的名为expenseReport的set函数。下面是ChartModule的根标签和接口IExpenseReport的实现:


程序代码

<mx:Modulexmlns:mxmx:Modulexmlns:mx="Http://www.adobe.com/2006/mxml"implements="IExpenseReport"  layout="vertical" percentWidth="100"percentHeight="100"> <mx:Script><![CDATA[  importmx.collections.ArrayCollection;  [Bindable]publicvarexpenses:ArrayCollection;   publicfunctionsetexpenseReport(ac:ArrayCollection):void  {  expenses=ac;  }  ]]></mx:Script> ...  </mx:Module>

让我们回到主程序,RadioButton的click事件会卸载任何当前已加载的模块然后加载一个新的模块。下面是ChartModule的RadioButton标签:

程序代码

<mx:RadioButtonxmx:RadioButtonx="10"y="123"label="Chart"click="readyModule('ChartModule.swf')"/>

这个click事件会调用上面列出的readyModule事件。

编译并运行程序

如果你使用了FlexBuilder2,请确定更改了项目的Properties将模块(Module)作为"Applications"包含进来。这样FlexBuilder2回将它们编译进SWF文件并且放进bin文件夹中。

FlexBuilder注意:要创建一个使用模块(Module)的工程,请使用工程的Properties将模块文件作为"Applications"。这会使得他们被编译进SWF文件。

一旦SWF文件被创建你就可以运行主程序并点击RadioButtons在模块(Module)之间切换。

FlexBuilder注意:FlexBuilder并不会保存任何关于模块(Module)和主程序的从属信息。只要你对一个模块(Module)作了更改,你就可能需要重新编译主程序或其它从属的模块(Module)。


将SWF文件***化

如果你查看一下主程序的SWF文件和Flex模块化中模块的SWF文件的话,你会发现它们的大小差不多。这就说明,模块的SWF和主程序SWF中有很多同样的组件定义。

FlashPlayer并不会保存元件(symbol)的副本。例如,如果主程序有一个Button组件而一个模块(Module)也有一个Button组件,FlashPlayer就不会从模块中加载Button了,因为它已经在主程序中有定义了。

使用-link-report=report.xml编译主程序,这样会创建一个链接到主程序的包含所有元件信息的文件。然后在编译模块(Module)的时候会使用那个report.xml文件。

程序代码

mxmlc-load-externs=report.xmlChartModule.mxml

当ChartModule被编译的时候,所有在report.xml文件中列出的元件将会在它的SWF中省略。当我不使用report.xml文件编译ChartModule.swf的时候,它的大小是202K。而当我使用report.xml文件的时候,SWF的大小只有68K。这大大减少了模块(Module)的加载时间。

在文章的开始将到模块(Module)的时候,我提过接口有另一个作用。假设你没有使用接口而是在主程序中引用模块的类。当你运行link-report的时候,你的模块类将会出现在report.xml中。当你使用使用link-report编译模块(Module)的时候你的模块并不会包含在它自己的SWF中!起初这并不会成为一个问题,尽管主程序由于包含了模块的定义而变得很大。然而,当你更改你的模块的时候发生了什么才是重要的。如果你没有重新编译主程序,你主程序的SWF文件将会包含模块(Module)旧的定义&mdash;&mdash;而不是你已经更改过的。

程序代码

mxmlc-link-report=report.xmlMain.mxml  mxmlc-load-externs=report.xmlChartModule.mxml  //etc.

如果你决定使用这个技术来减小模块(Module)的大小,那么就使用接口来确保终端用户使用的总是模块(Module)的***版本。

FlexBuilder注意:FlexBuilder在一个工程里没有办法做到这些。如果你确定你将要创建一个使用模块(Module)的工程,可以考虑一下将公共的类和接口(包括event类)放到一个SWC(FlexLibraryProject)中然后将模块(Module)分离到它们各自的工程里。

或者,你可以将所有东西创建为一个单一的Flex工程,然后将***化作为一个产品化前或测试前的部署步骤在FlexBuilder之外进行。

感谢你能够认真阅读完这篇文章,希望小编分享的“Flex模块化应用程序开发的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Flex模块化应用程序开发的示例分析

本文链接: https://lsjlt.com/news/289987.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flex模块化应用程序开发的示例分析
    这篇文章主要介绍了Flex模块化应用程序开发的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex模块化应用程序开发如果你没有看过RogerGonzalez的Blo...
    99+
    2023-06-17
  • Flex应用程序模型的示例分析
    这篇文章主要介绍Flex应用程序模型的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建一个Flex应用程序Flex应用程序模型Flex创建一个应用程序时,你使用组件(容器/containers和控件/con...
    99+
    2023-06-17
  • JEESZ模块开发的示例分析
    这篇文章将为大家详细讲解有关JEESZ模块开发的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 创建表1、 创建电子商务系统配置 jeesz_eb_global_co...
    99+
    2023-06-05
  • Android开发之项目模块化的示例分析
    这篇文章主要为大家展示了“Android开发之项目模块化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android开发之项目模块化的示例分析”这篇文章吧。项目协同项目协同,也叫多项目...
    99+
    2023-05-30
    android
  • Node.js的模块化开发实例分析
    这篇文章主要讲解了“Node.js的模块化开发实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js的模块化开发实例分析”吧!1.Node.j...
    99+
    2024-04-02
  • Flex开发环境和应用框架的示例分析
    这篇文章将为大家详细讲解有关Flex开发环境和应用框架的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Flex开发环境AdobeFlexBuilder仍然是使用最为广泛的商业FlexIDE。它构建...
    99+
    2023-06-17
  • Flex组件开发的示例分析
    这篇文章主要介绍Flex组件开发的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flex组件开发总结在平时的Flex开发过程中遇到的问题以及解决办法总结如下:1.如何监听键盘事件?<mx:TextAre...
    99+
    2023-06-17
  • Flex开发环境的示例分析
    这篇文章给大家分享的是有关Flex开发环境的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex开发环境Adobe Flex Builder仍然是使用最为广泛的商业Flex IDE。它构建在开源的Ecl...
    99+
    2023-06-17
  • JavaScript模块化的示例分析
    小编给大家分享一下JavaScript模块化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 浏览器支持使用JavaScript 模块依赖于 impo...
    99+
    2023-06-15
  • python编程开发时间calendar模块示例分析
    本篇内容主要讲解“python编程开发时间calendar模块示例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python编程开发时间calendar模块示例分析”吧!calendar模块...
    99+
    2023-06-25
  • Flex技术框架和应用开发步骤的示例分析
    这篇文章给大家分享的是有关Flex技术框架和应用开发步骤的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex简介Flex通常是指AdobeFlex,是最初由Macromedia公司在2004年3月发布...
    99+
    2023-06-17
  • vuex与模块化的示例分析
    这篇文章将为大家详细讲解有关vuex与模块化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例教程例子是在vue-cli基础上构建的,以下是src文件下的内容目...
    99+
    2024-04-02
  • 微信小程序WXS模块的示例分析
    这篇文章给大家分享的是有关微信小程序WXS模块的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。WXS 模块WXS 代码可以编写在 wxml 文件中的 <wxs> 标签内,或...
    99+
    2023-06-26
  • JS中开发桌面端应用程序的示例分析
    这篇文章主要为大家展示了“JS中开发桌面端应用程序的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS中开发桌面端应用程序的示例分析”这篇文章吧。1. ...
    99+
    2024-04-02
  • 微信小程序模块化和文件作用域的示例分析
    小编给大家分享一下微信小程序模块化和文件作用域的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!文件作用域在JavaScript文件中声明的变量和函数只在该...
    99+
    2023-06-26
  • Google Wave程序开发的示例分析
    这篇文章将为大家详细讲解有关Google Wave程序开发的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Wave API允许开发者为Google Wave开发插...
    99+
    2024-04-02
  • webpack4.x CommonJS模块化的示例分析
    这篇文章主要为大家展示了“webpack4.x CommonJS模块化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“webpack4.x Common...
    99+
    2024-04-02
  • js模块化规范的示例分析
    这篇文章主要介绍js模块化规范的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. CommonJS用于服务端模块化编程,比如nodejs就采用此规范;一个文件就是一个模块,...
    99+
    2024-04-02
  • swiper小程序开发示例分析
    这篇“swiper小程序开发示例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“swiper小程序开发示例分析”文章吧。 ...
    99+
    2023-06-26
  • vue开发应用的示例分析
    这篇文章将为大家详细讲解有关vue开发应用的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用 vux UI组件库使用 vue-navigation...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作