3

对于何时使用Flex 模块RSL 库(在 Flex 3.5 中)更好,我有点困惑。

我的目标是将我的项目分成几个单元项目,这样我就可以分别测试和工作。假设我有一个客户应用程序和供应商应用程序。我还有一个带有两个按钮的前端面板。每个按钮都会启动客户应用程序或供应商应用程序。

这些应用程序做出了不同的事情。它们也共享一些 .as 函数和通用组件。

我知道如果我创建一个主项目(用于用户登录并显示第一个面板)和两个模块(客户、供应商),我必须在我的 Eclipse 项目中拥有所有这些组件,不是吗?

我应该为供应商和其他客户应用程序创建 SWC 并使用 RSL 从主应用程序调用,而不是做模块?

那么,哪个选项更合适呢?你有什么建议?每个选项的取舍是什么?

另一方面,这个 flex 应用程序通过 Blaze 和 ibatis 与 Java 集成,用于持久性管理,并由 web apache 服务器保存。我还考虑创建独立的战争文件来保持这种独立性,但我认为这不会优化 flex 代码。我是正确的?

谢谢你。

4

2 回答 2

3

模块和 RSL 有不同的用途。

RSL 可以包含代码和资产,并在加载主 swf 时加载到内存中,就好像它们是同一文件的一部分一样。

RSL 的主要目的是拆分可能在多个应用程序中使用的代码或资产,以便 Web 浏览器可以缓存它并且只加载一次。RSL 不需要 Flex 框架,可用于任何 Flash/ActionScript 项目。您无法控制如何加载 RSL,也无法卸载它。

模块本质上是一个可以按需加载的外部 SWF,并添加了许多特定于 Flex 的代码,以确保 Flex 功能按预期工作。例如,如果处理不当,加载的 SWF 中的样式继承和嵌入字体可能会出现问题。Flex UI 组件具有特定的逻辑来确保这些东西与模块一起正常工作。模块还处理跨域问题(例如,当鼠标悬停在来自另一个域的 SWF 上时,您通常无法接收鼠标事件,但模块可以解决此问题)。

模块按需加载,通常包含视图。模块的主要目的是延迟加载视图,直到需要它。这加快了应用程序的初始加载速度,用户只需要加载该视图,如果他真的想查看它。

与仅加载 SWF 相比,模块的开销很大,但您需要使用模块来保证 Flex 的所有功能都按预期工作。

模块和 RSL 都可以优化以删除特定应用程序中已包含的代码。不过,这对模块来说更有意义,因为它会通过使其仅可用于单个应用程序来破坏 RSL 的主要用例。

于 2011-01-20T16:13:44.937 回答
2

模块提供了对内容何时加载(以及可选)卸载的更细粒度的控制。

假设用户没有在本地缓存 RSL,则将其作为应用程序初始加载的一部分进行加载。

使用模块,您可以将加载延迟到用户请求它的时间。

在您的实例中,听起来您想将两者结合使用。

为客户和供应商应用程序分别声明一个模块,并仅在单击按钮时加载相应的模块。这使您免于承担冗余模块的下载成本。

它们之间共享的公共逻辑可以进入 RSL,该 RSL 将缓存在客户端,并且只下载一次。

于 2010-06-11T15:13:31.590 回答