【问题标题】:Flex Modules vs RSL弹性模块与 RSL
【发布时间】:2010-06-09 09:20:36
【问题描述】:

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

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

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

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

我是否应该为供应商创建 SWC 并为客户应用创建其他 SWC 并使用 RSL 从主应用调用?

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

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

谢谢。

【问题讨论】:

    标签: apache-flex module swc


    【解决方案1】:

    模块和 RSL 的用途不同。

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      在你的例子中,听起来你想使用两者的组合。

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

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

      【讨论】:

      • 嗨,Marty,非常感谢您的回复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2010-10-16
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多