簡體   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