我们使用 Ext JS MVC 作为插件/主机架构的前端技术,其中存在一个主机并且可以通过 xcopy 轻松安装许多插件。每个插件都有一个 Ext JS 应用程序,每个插件都会在页面加载时注册自己。整个应用程序是单页应用程序 (SPA)。
我们现在遇到的主要问题是,我们安装了 10 多个插件,每个插件至少有 10 个控制器,以及 50 多个视图、存储和模型。因此,当我们刷新页面 (F5) 时,我们应该坐下来等待近 30 秒,以便接近 200 个 HTTP 请求的内容到达服务器,并返回接近 3 MB 的响应。
尽管已经应用了缓存,但这根本不是可取的。甚至不是第一次。我想即使是外行也会接受这样的论点,即要得到一些牛奶,你不应该等到农场、奶牛、谷仓、房屋、道路、电力、河流等建成。
这个问题的明确答案必须是延迟加载控制器、视图、存储和模型。然而,我们并没有清楚地知道我们必须做什么才能做到这一点,我们也无法在网络上找到一个好的、适用的答案。大多数讨论只是关于延迟加载的要求,但没有提到如何。例如看这个链接:
http://www.sencha.com/forum/showthread.php?130449-Large-Single-Page-Architecture-in-ExtJS-4.0
或者这个:
http://www.sencha.com/forum/archive/index.php/t-156694.html?s=aaeec1ce30acbc9cbd2615afadec982f
如果我们使用Ext.require
方法,那么我们只将我们的控制器加载为简单的 JavaScript 文件,它们不会进入它们的层次结构来加载它们的存储、视图和模型。我们已经对此进行了测试。
另一方面,我们在 Ext JS 上找不到getController()
和。ControllerManager
似乎他们在 Ext JS 4.1.3 上消失了。
关于如何根据 URL 参数动态加载控制器的任何想法(我们可能需要一个路由引擎来解析 URL 并动态加载控制器)。即使是文档齐全的文章或带有代码示例的论坛讨论也可以帮助我们。