Flex模块与RSL

时间:2010-06-09 09:20:36

标签: flex module swc

我对使用 Flex Modules RSL libriaries (在Flex 3.5中)更好的时候感到有点困惑。

我的目标是将我的项目拆分为多个单元项目,因此我可以单独测试和工作。我们假设我有一个客户应用程序和供应商应用程序。我还有一个带两个按钮的前端面板。每个按钮都会启动客户应用或供应商应用。

这些应用程序有不同的东西。它们也共享一些.as功能和通用组件。

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

我应该为供应商创建SWC而不是为客户应用创建SWC而使用RSL从主应用程序调用吗?

那么,哪个选项更合适?你有什么建议我的?哪个是每个选项的权衡?

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

谢谢。

2 个答案:

答案 0 :(得分:3)

模块和RSL用于不同的目的。

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

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

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

模块按需加载,通常包含视图。 模块的主要目的是推迟加载视图直到需要。这加速了应用程序的初始加载,用户只需加载该视图即可实际查看它。

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

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

答案 1 :(得分:2)

模块提供了对内容加载时的精细控制 - 并且可选 - 卸载。

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

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

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

为Customer和Vendor应用程序声明每个模块,并仅在单击按钮时加载相应的模块。这样可以避免产生冗余模块的下载成本。

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