Apache flex 使用多个模块时优化Flex

Apache flex 使用多个模块时优化Flex,apache-flex,optimization,module,flash,Apache Flex,Optimization,Module,Flash,我有一个Flex应用程序,其中加载时间非常重要(消费者站点)。我希望能够在屏幕上得到一些东西,然后允许根据需要加载其他模块 我面临的问题是,与将所有组件包含在一个.swf文件中相比,所有模块的总和要大得多 原因很明显。例如,web服务访问所需的类似乎需要大约100kb。如果我不在main.swf中使用这些类,那么它们将包含在使用它们的每个模块中。所以如果我有5个模块,那就浪费了额外的500kB 理论上我想要三个层次 main.swf-最小可能的布局/样式/字体/框架类型 common.swf-模

我有一个Flex应用程序,其中加载时间非常重要(消费者站点)。我希望能够在屏幕上得到一些东西,然后允许根据需要加载其他模块

我面临的问题是,与将所有组件包含在一个.swf文件中相比,所有模块的总和要大得多

原因很明显。例如,web服务访问所需的类似乎需要大约100kb。如果我不在main.swf中使用这些类,那么它们将包含在使用它们的每个模块中。所以如果我有5个模块,那就浪费了额外的500kB

理论上我想要三个层次

main.swf-最小可能的布局/样式/字体/框架类型 common.swf-模块1+模块2所需的其他类(如web服务) 模块1.swf-现场模块1 模块2.swf-现场模块2

我不知道这是否可能

我想知道是否可以为部分框架而不是整个框架加载swz/swf文件

我真的需要把我的主应用程序大小降到200Kb。当我添加web服务和基本datagrid功能时,它会增长到450kb

任何经验教训都将不胜感激。

你可以深入课堂,也许你可以在前200kbs加载核心内容,然后在需要时加载其余内容


另外,值得注意的是,您使用的任何SWC都是在编译时嵌入的,而任何SWF都是在运行时加载的。

Flex在文件大小方面有点麻烦。只有一种方法可以降低应用程序的大小,那就是在框架中使用外部swz。有一篇AdobeDevNet文章,我建议您阅读

在我参与的一个项目中,我们的预加载模块在吸收我们不想要的类时遇到了问题。我们所要做的是为其他模块中的类创建接口,并以这种方式引用它们。加载模块时,我们只需为IApplicationModule分配一个引用,以便调用初始化代码

还要考虑将类放入单独的SWF文件中,然后使用ApplicationDomain访问这些类

(这段代码解释了如何访问从Flex中的模块加载的类)


命令行编译器上有一个选项可以排除已经编译到另一个swf中的类定义。它的工作原理如下:

  • 编译主应用程序(包含加载程序)并选择生成报告
  • 编译模块并选择排除上述报告中的类

  • 我知道这是很久以前的事了,但我想我会发布另一个回复,以防有人还在寻找答案

    我一直在研究优化Flex应用程序,在检查了一些之后,我决定使用模块。主要是因为他们有很好的优化选择

    您需要的两个mxmlc命令是:

    mxmlc -link-report=MyAppReport.xml MyApp.mxml
    

    我的外部swf(使用Flex框架)现在只有21k。它做了很多(还没有),但即使它做的越来越多,它仍将继续使用来自主应用程序代码的资源

    这是我创建的用于加快进程的批处理文件(必须将mxmlc放入环境路径变量中,才能使其像这样工作。控制面板->系统->高级->环境变量,编辑路径系统变量,将路径添加到mxmlc(需要重新启动)):

    更多信息请点击此处:


    希望有帮助

    如果在Flex/Flash builder中执行此操作,则MyAppReport.xml应放在模块项目文件夹的根目录中,即与module.mxml放在同一文件夹中。好答案,顺便说一句
    mxmlc -link-report=MyAppReport.xml MyApp.mxml
    
    mxmlc -load-externs=MyAppReport.xml MyModule.mxml
    
    cd C:\Projects\MyProject\Develop\Modules
    mxmlc -link-report=MyAppReport.xml C:\Projects\MyProject\Develop\Source\Main.mxml
    mxmlc -load-externs=MyAppReport.xml MyModule.mxml
    move /Y MyModule.swf ..\Runtime\Modules