2010-06-09 66 views
3

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

我的目标是将我的项目拆分为几个单元项目,以便我可以单独进行测试和工作。假设我有一个客户应用程序和供应商应用程序。我也有一个两个按钮的前端面板。每个按钮启动客户应用程序或供应商应用程序。

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

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

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

那么,哪个选项更合适?你有什么建议吗?每个选项的权衡是什么?另一方面,这个flex应用程序通过Blaze和ibatis与Java集成,用于持久性管理,并由web apache服务器保存。我还考虑创建独立的战争文件以保持这种独立性,但我认为这不会优化Flex代码。我是对的?

谢谢。

回答

2

模块提供当内容被加载在更细粒度的控制 - 以及任选地 - 卸载。

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

使用模块,您可以推迟负载,直到用户请求它为止。

在你的实例中,它听起来像你想要使用两者的组合。

为客户和供应商应用程序各声明一个模块,并仅在按钮单击时加载适当的模块。这样可以避免导致冗余模块的下载成本。

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

+0

嗨马蒂, 非常感谢您的回应。 – nil 2010-06-22 07:42:23

+0

非常专业的答案。谢谢! – ufk 2010-09-15 17:20:33

3

模块和RSL的服务不同的目的。

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

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

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

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

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

模块和RSL都可以优化以删除已包含在特定应用程序中的代码。尽管如此,这对模块来说更有意义,因为它通常会使RSL的主要用例与其单一应用程序一起使用,从而大部分失败。