【问题标题】:Modularity in FlexFlex 中的模块化
【发布时间】:2010-05-24 18:04:15
【问题描述】:

我正在为 Flex/Air 开发一个相当大的应用程序。我们正在使用GraniteDS and Tide 与来自我们的 Java EE 服务器的模型进行交互。

我一直在阅读有关 Flex 中的模块化和模块的文章。应用程序已经构建好了,我正在想办法重新设计一些类和部分。从我目前所读的内容来看,我理解模块是一个不同的 swf,可以动态加载。大多数教程/文档都是面向使用 Flex 或 Air 的 Flash“程序员”而不是真正的开发人员,这使得在线资源更难获得。

我还不能理解的是如何在这个模块下封装 ActionScript 类或 MXML 视图。

我已将一些代码分离到库中。例如,从 Granite 生成的代码位于“服务器”库中。但我想将部分逻辑与其版主、控制器和视图分开。模块是要走的路吗?是否有像教程这样的“傻瓜模块”或“程序员头上的 Flex 模块”,以便获得更好的视角来构建我的架构?什么时候选择库,什么时候选择模块?

我正在使用 Flex 3.5,而迁移到 Flex 4 还遥遥无期,所以请不要使用 Flex 4 回答,谢谢!

【问题讨论】:

  • 在旁注中,您所说的“大多数教程/文档都面向使用 Flex 或 Air 而不是真正的开发人员的 Flash“程序员”,这究竟是什么意思,这使得在线资源变得更加困难要得到。”?就书籍而言,“flex 3 食谱”有几个关于模块的好章节(链接:oreilly.com/catalog/9780596529857)并且网络上有大量资源。
  • 我发现的大多数示例都包含 MXML 中的所有逻辑,而不是代码。而且我发现他们中的大多数都是面向学习 Flex 的 Flash 设计师,而不是学习 Flex 的程序员。这是不同的受众,不同的视角。但是对于开发人员来说,有一些很好的资源(虽然更少)。也许“真正的开发者”太苛刻了……

标签: apache-flex air modularity


【解决方案1】:

模块是将 UI 封装到互不依赖的不同部分的解决方案。将它们想象成应用程序中的应用程序。

如果你想封装“代码”,即非 UI 动作脚本,那么你真的只需要类和类的包。您还可以将该代码打包到一个 swc 中,它只是该代码的编译版本,您可以将其包含在多个项目中(我认为这就是您所说的库)。

您不会想创建一个模块只是为了包含非 ui 代码。您不希望使用模块来分离应用程序中的模型/视图/控制器。

如果你有你的应用程序的一部分,它在大多数情况下完全独立运行,除了可能传入的一点信息之外,与应用程序的其余部分没有真正的依赖关系,那么它对模块是有意义的。

我们主要使用模块的地方是用于具有不同部分的应用程序,您一次只在一个部分中工作。其他部分不需要占用资源,因此我们在模块中有不同的部分并根据需要加载/卸载它们。

这有帮助吗?

编辑以回复以下评论:

我所说的库是指 Flex 库 项目,您封装的地方 类并使用 swc。你能有吗 Flex 项目中的这些库? (我使用一个单独的图书馆项目 每个新库)。

是的,您可以在 flex 项目中使用这些 swc(代码库)。只需将 swc 放在 flex/flash 构建器项目的 lib 目录中,代码就会自动添加到您的类路径中。只需确保单个 swc 中的代码所需的所有内容都在该 swc 中。不要让一个 swc 依赖另一个 swc 来运行。

【讨论】:

  • 感谢您的回答!这有点证实了我的模块概念。我所说的库是指 Flex 库项目,您可以在其中封装类并使用 swc。您可以在 Flex 项目中包含这些库吗? (我为每个新图书馆使用一个单独的图书馆项目)。我想我正在为聊天窗口使用一个模块,它使用 XIFF - 一个 jabber 客户端库,因此它使用的项目其余部分的信息非常少。
  • 我在上面的答案中添加了更多信息来回答您的问题。
  • 是的,我确实添加了 swc,我想知道您是否可以将该项目用作 Flex 项目中的子项目。无论如何,没关系,我认为我在模块化方面做得比我想象的要好。我将只添加一个聊天模块,并继续将其他逻辑封装在库中。谢谢!
  • 这个答案听起来好像您无法将 UI 元素封装到类、包或库项目中。你不打算传达这个,是吗?
  • 不,我不打算这样。您当然可以将 UI 封装到类和库项目中。但是将逻辑封装到模块中是没有意义的。就像我之前说的,我喜欢将模块视为较大应用程序中的较小应用程序,如果您愿意,也可以是子应用程序。你觉得这样更清楚吗?
猜你喜欢
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多