2013-06-24 22 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