繁体   English   中英

ExtJS 4 Web应用程序状态管理

[英]ExtJS 4 Web Application State Management

我正在创建一个ExtJS 4单页Web应用程序,遇到了一些问题,这些问题决定了MVC支持的定义和维护应用程序状态的方式。 我知道ExtJS 4商店的全球性质,并且喜欢它们的想法,但是它们的实用性在几点上受到质疑。

例如,我有一些模型可能在某个时候可能需要扩展到数千个模型,而将所有这些模型加载到客户端浏览器的内存中的想法并没有使我成为最好的想法。 尝试执行此操作会带来很大的性能问题。

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

所以我的实际问题是如何处理这种情况? 我在StackOverflow上读到过类似的问题,它要求视图保留自己的存储实例而不是使用全局实例,但是我不确定这是否适合MVC模式。 我当前的想法是基于一个控制器来管理状态并保存商店的各种实例,这样它们就不会直接绑定到视图,但是仍然可以在事件调用和其他控制器上进行访问。 这是一个好的解决方案,还是我错过了什么?

好吧,您的问题有很多事情要做。 首先,我认为您对商店的想法有点过头了。 最终,存储只是模型实例的缓存。 因此,您可以根据应用程序的需求创建任意数量的实例。 如果您想尝试使用一个存储来管理整个数据集,当然可以做到这一点,但是您必须非常了解并保持警惕,以跟踪在整个流程中应用的过滤器/分类器/等。你的申请。

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

最终,我不会为某种特定的方法是否“适合” MVC模式而担心(它本身在Ext JS中是非常特殊的风格,不是每个人都想要的风格...)。 是的,您想创建一种可扩展且可管理的方法; 但是,我认为您的应用程序需求应该驱动您如何利用Ext JS 4提供的MVC约定,而不是让MVC约定确定您的业务需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM