我对使用 Flex Modules 或 RSL libriaries (在Flex 3.5中)更好的时候感到有点困惑。
我的目标是将我的项目拆分为多个单元项目,因此我可以单独测试和工作。我们假设我有一个客户应用程序和供应商应用程序。我还有一个带两个按钮的前端面板。每个按钮都会启动客户应用或供应商应用。
这些应用程序有不同的东西。它们也共享一些.as功能和通用组件。
据我所知,如果我创建一个主项目(用于用户登录并显示第一个面板)和两个模块(客户,供应商),我必须在Eclipse项目中拥有所有这些组件,不是吗?
我应该为供应商创建SWC而不是为客户应用创建SWC而使用RSL从主应用程序调用吗?
那么,哪个选项更合适?你有什么建议我的?哪个是每个选项的权衡?
另一方面,这个flex应用程序通过Blaze和ibatis与Java集成,用于持久管理,并由web apache服务器保存。我还考虑创建独立的war文件以保持这种独立性,但我认为这不会优化flex代码。我是正确的?
谢谢。
无
答案 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,它将在客户端缓存,并且只下载一次。