Javascript ExtJS 4 Web应用程序状态管理

Javascript ExtJS 4 Web应用程序状态管理,javascript,extjs,extjs4,extjs-mvc,Javascript,Extjs,Extjs4,Extjs Mvc,我正在创建一个ExtJS4单页web应用程序,在决定使用MVC喜欢的方法定义和维护我的应用程序状态时遇到了一些问题。我知道ExtJS4商店的全球性,我喜欢它们的想法,但它们的实用性在几点上受到质疑 例如,我有一些模型可能需要在某个时候扩展到数千个,而将所有这些加载到客户端浏览器内存中的想法对我来说并不是最好的想法。如果我尝试这样做,我会非常担心性能 此外,除了选项卡面板中同一选项卡上的多个网格外,我的应用程序还将具有窗口,可以同时查看多个窗口。这些视图应该根据其属性显示模型的子集。如果这些视图绑

我正在创建一个ExtJS4单页web应用程序,在决定使用MVC喜欢的方法定义和维护我的应用程序状态时遇到了一些问题。我知道ExtJS4商店的全球性,我喜欢它们的想法,但它们的实用性在几点上受到质疑

例如,我有一些模型可能需要在某个时候扩展到数千个,而将所有这些加载到客户端浏览器内存中的想法对我来说并不是最好的想法。如果我尝试这样做,我会非常担心性能

此外,除了选项卡面板中同一选项卡上的多个网格外,我的应用程序还将具有窗口,可以同时查看多个窗口。这些视图应该根据其属性显示模型的子集。如果这些视图绑定到同一个全局存储及其模型,它们将受到筛选器等操作的影响,并将有效地限制为显示同一组模型,这不是我想要实现的


所以我真正的问题是我该如何处理这种情况?我读过一篇关于StackOverflow的类似文章,它要求视图保存自己的存储实例,而不是使用全局实例,但我不确定这是否符合MVC模式。我目前的想法是使用一个控制器来管理状态并保存存储区的各种实例,这样它们就不会直接绑定到视图,但仍然可以通过事件调用和其他控制器访问它们。这是一个好的解决方案还是我遗漏了什么?

好吧,你的问题有很多。首先,我认为你有点过虑了。最终,存储只是模型实例的缓存。因此,您可以根据应用程序的要求创建任意数量的实例。如果您想尝试使用单个存储来管理整个数据集,您当然可以这样做,但您必须非常清楚并警惕地跟踪在整个应用程序流程中应用的过滤器/分拣机等

Re:关于应用程序数据的规模,我强烈建议不要同时加载所有模型实例(当然,这取决于数据的大小和复杂性)。除非您实际需要应用程序中随时可用的所有可能实例,否则我将采用一种只加载您需要的实例的方法,具体取决于场景。如果您需要访问数千条记录,则始终可以应用远程筛选器来处理服务器端的整个数据集,但实际上只能与客户端的数据子集进行交互

最终,我不会太担心某个特定的方法是否“适合”MVC模式(这在ExtJS中是一个非常特殊的风格,不是每个人都想要的风格…)。是的,您希望创建一种可扩展和可管理的方法;然而,我认为应用程序的需求应该驱动您如何利用ExtJS4提供的MVC约定,而不是让MVC约定决定您的业务需求