据我所知,模块kann用于将应用程序拆分为不同的部分。
一个很大的优势似乎是能够在应用程序启动后加载模块,以获得更好的启动性能。
我个人希望模块能够为模块代码创建一个自己的Code Sandbox。 因此,主应用程序代码和模块代码都不应相互影响。但是,例如,来自模块的CSS样式会影响主要应用程序签证。
我的问题: 1.除运行时加载外,我可以使用哪些模块? 2.是否有在自己的沙箱中运行代码的选项?例如,通过加载swf资产?
答案 0 :(得分:4)
- 我可以在运行时加载时使用模块吗?
醇>
您可以将应用程序划分为不同的部分 - 例如,您可能只需要更新应用程序的购物车部分而不是整个应用程序。这使您无需再次部署整个应用程序即可完成此操作。这迫使良好的抽象,并意味着更少的回归测试/错误。
另一个好处是保护swf文件本身。我已经回写了最终应用程序,用户可能会进入订单屏幕,而不是用户管理屏幕。因为每个都是模块,所以客户端甚至都没有机会看到(或反编译)用户管理swf代码 - 因为我可以在尝试加载模块时验证用户的会话服务器端。这是一个额外的保护层。
内存管理 - 不仅仅是加载应用程序,还包括一次加载所有功能所需的处理量。如果用户只需要一个或两个屏幕,为什么要加载其他98个屏幕?
可移植性和代码重用。您可以在面向消费者的应用程序和后端工具中使用“订单查看器”模块。这些绝对不是同一个应用程序,但它们都需要订单查看器的基本功能。更好的是,一个完全不同的应用程序可以使用相同的功能。
- 是否有在自己的沙箱中运行代码的选项?例如通过 加载swf资产?
醇>
模块之间进行通信需要特别注意,这里有一个很好的阅读:
http://livedocs.adobe.com/flex/3/html/help.html?content=modular_2.html
答案 1 :(得分:1)
您可以通过为其flexModuleFactory创建新的SystemManager来允许模块单独处理其样式,并且出于安全目的,您可以将其加载到单独的applicationDomain中。
不是你问的问题的答案,但它解决了你遇到的根本问题。
我们在上一份工作中使用了模块,允许我们动态开发和添加新的功能 - 模块的路径将存储在数据库中并在运行时加载。
HTH;
艾米