组织Flex应用程序以获得编译性能的最佳方法?

时间:2010-06-28 14:26:49

标签: flex flexbuilder flash-builder

我准备重组&重构一个Flash Builder应用程序。重组的目标是1.)保持我正在尽快完成的项目部分的编译时间,2)保持不相关的部分分开以便重用代码。如果需要权衡,目标#1胜过目标#2。

目前,该应用程序在一个项目中具有资产,在另一个项目中具有核心功能AS3,在第三个项目中具有链接到其他项目的MXML。

将资源/代码移动到swc库是否有助于编译时间?如何将资产编译成swf并将其嵌入到主应用程序中呢?还有其他任何技术吗?

2 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题,应用程序编译时间超过1分钟。

这是我们的解决方案:

  1. 核心库包含具有静态属性的类Core,例如:Core.resourceManager:IResourceManagerCore.stringManager:IStringManager等。
  2. 主要应用程序项目包括核心库,并为所有Core.someProp提供实施。这可以通过一些隐藏的方法来完成,例如Core.setImpelentation()
  3. 无限数量的模块使用Core Library将其显示/逻辑贡献给应用程序。重要:
    1. 每个模块都是一个单独的Flash Builder项目
    2. 模块链接核心库作为外部(它包含在主应用程序中)
    3. 模块具有描述它的XML文件,例如它在应用程序控制栏中的名称和图标。它允许在开始时不加载所有模块。
    4. 用户应该能够选择他想要使用的模块。这也有助于您的发展。
  4. 您可以选择创建 Lib Library ,并在其中包含模块之间通用的所有类,并且可以使用Core Library实现。
  5. 结果令人难以置信 - 您的应用程序变得低耦合,开放/编译时间减少,API变得更加清晰。利润!

答案 1 :(得分:0)

正如Maxim所描述的那样,模块绝对是这里的方式。继他的建议,这是完全可靠的,这里有一些其他的提示:

  • 将样式提取到单独的项目,并将.css编译为SWF。在运行时加载SWF。
  • 首先按业务功能构建包,MVC角色第二,

    例如:使用com.myapp.model.userconfig.UserOptions而不是com.myapp.userconfig.model.UserOptions。强制该包只能引用其兄弟姐妹,或com.myapp.core.*

    这样,每个包都是一个自包含的模块,它只引用自身或核心库。

  • 考虑Hellfire Compiler,它可以将您的编译并行存储在几个CPU上
  • 如果还没有,请考虑迁移到Flex 4 SDK,它有几个编译器性能改进,特别是在编译多个SWC时。