我目前正在開發一個具有許多視圖/ 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的主要優點和缺點是什麼?
在你的鏈接文章的答案中,用戶catalinux寫了一些關於DeftJS的東西。儘管它對我來說是新的,但我看起來有點不自在。它的主要優點/缺點是什麼?使用DeftJS有什麼不足嗎? – JuHwon
我喜歡Deft的IoC和推遲/承諾,但我認爲他們搞砸了MVC的選擇器。例如,您不能使用Deft選擇表單中的所有字段,但可以使用常規的extjs mvc。 –
@NeilMcGuigan我剛開始使用DeftJS,我可以告訴你最後的聲明(不能使用複雜的選擇器)是不正確的。但是,選擇器的範圍僅限於受控視圖的子項。哪個IMO是一件非常好的事情:常規的ExtJS允許你從任何控制器中選擇任何東西,從而爲創建隱藏的依賴關係而敞開大門。對我而言,ExtJS的「MVC」設計非常糟糕,DeftJS最終爲Ext應用程序的體系結構帶來了一些意義。 – RIAstar