2013-06-24 26 views
2

我目前正在開發一個具有許多視圖/ controlers/Ext JS應用程序... 我想知道自己加載JS控制器/視圖/等最佳做法是什麼上...Ext JS 4.2.1加載控制器 - 最佳實踐

目前,我有我的應用程序定義是這樣的:

// enable javascript cache for debugging, otherwise Chrome breakpoints are lost 
Ext.Loader.setConfig({ disableCaching: false }); 

Ext.require('Ext.util.History'); 
Ext.require('app.Sitemap'); 
Ext.require('app.Error'); 


Ext.define('app.Application', { 
    name: 'app', 

    extend: 'Ext.app.Application', 

    views: [ 
     // TODO: add views here 
     'app.view.Viewport', 
     'app.view.BaseMain', 
     'app.view.Main', 
     'app.view.ApplicationHeader', 

     //administration 
     'app.view.administration.User' 
     ... 
    ], 

    controllers: [ 
     'app.controller.Viewport', 
     'app.controller.Main', 
     'app.controller.ApplicationHeader', 

     //administration 
     'app.controller.administration.User', 
     ... 
    ], 

    stores: [ 
     // stores in there.. 
    ] 
}); 

不知何故此強制客戶端加載我在啓動時所有視圖和控制器,並呼籲當然所有控制器的所有初始化方法。 。 我需要加載數據每次我chnage我的看法..現在我不能加載它在我的控制器init函數上。我將不得不這樣做,我假設:

init: function() { 
    this.control({ 
     '#administration_User': { 
      afterrender: this.onAfterRender 
     } 
    }); 
}, 

有沒有更好的方法來做到這一點?或者只是其他事件?

雖然我質疑自己的主要事情是,如果這是在啓動時加載所有的JavaScript的最佳做法。如果只加載客戶端現在需要的控制器/視圖/ ...,會不會更好?或者我應該在啓動時加載所有的JS?

如果我想要動態加載控制器,我該怎麼做?我假設將不得不從我的應用程序數組(視圖,控制器,存儲)中刪除它們,並創建一個實例,如果我確實需要它,並且mby在控制器init中設置視圖?!

什麼是最佳實踐?

UPDATE

將deftJS其視圖 - 控制是一個很好的選擇嗎? deftJS的主要優點和缺點是什麼?

回答

3

您可以在啓動時加載所有控制器。見下面的鏈接,測試1000個控制器和它的快速:

Best practices for initializing and deconstructing controllers

您的快速應用最好的辦法是讓所有最小化並壓縮成一個文件,使用Sencha CMD所需的文件。

由於ui尚未加載,因此您不應將數據加載到init的視圖中,如果您願意,可以在onLoad上執行此操作。

我會在afterrenderactivated事件中加載視圖的數據。

理想情況下,您可以使用模塊化方法,在模塊上調用init()方法,該模塊需要該模塊的控制器,視圖和模型。

+0

在你的鏈接文章的答案中,用戶catalinux寫了一些關於DeftJS的東西。儘管它對我來說是新的,但我看起來有點不自在。它的主要優點/缺點是什麼?使用DeftJS有什麼不足嗎? – JuHwon

+1

我喜歡Deft的IoC和推遲/承諾,但我認爲他們搞砸了MVC的選擇器。例如,您不能使用Deft選擇表單中的所有字段,但可以使用常規的extjs mvc。 –

+2

@NeilMcGuigan我剛開始使用DeftJS,我可以告訴你最後的聲明(不能使用複雜的選擇器)是不正確的。但是,選擇器的範圍僅限於受控視圖的子項。哪個IMO是一件非常好的事情:常規的ExtJS允許你從任何控制器中選擇任何東西,從而爲創建隱藏的依賴關係而敞開大門。對我而言,ExtJS的「MVC」設計非常糟糕,DeftJS最終爲Ext應用程序的體系結構帶來了一些意義。 – RIAstar