初始化和解构控制器的最佳实践
当构建应用程序时,设置控制器的最佳方式是什么?我知道路由,事件监听器和大多数所有的交互性都应该由控制器来管理,但是我的主控制器已经开始失去控制,并且我不知道如何将我的逻辑最好地分离成单独的控制器,而不需要让他们一直“运行”...初始化和解构控制器的最佳实践
将应用程序全部加载到应用程序启动时即使使用数千个控制器,也可以使用
数百个
。这是需要时间的视图渲染。
尽管使用sencha cmd,请确保您的应用程序尽可能最小化并且连接在一起。
在测试中,我创建了1000个简单的控制器,就像这样:
Ext.define('app.controller.ControllerN', {
extend: 'Ext.app.Controller',
init: function(application) {
this.control({
buttonN1: {
click: function() {
}
},
buttonN2: {
click:function(){}
},
... 20 listeners
});
}
});
我他们串联成一个文件,并加载它们在app.js这样的:
Ext.application({
name:'app',
controllers:[
'Controller0',
'Controller1'
... 1000 controllers
],
launch:function(){}
}
花浏览器刷新(Chrome)一秒钟,直到最后一个控制器的init方法被调用。
我有类似的问题,所以我根据它将支持的业务功能划分控制器,例如userController执行所有与用户相关的操作,例如登录,注销,更新等,而cartController则执行与购物车有关的所有操作,如添加到购物车,应用优惠券,付款等。由于单个视图可以具有与不同应用领域相关的许多功能,您可以在多个控制器中将此参考添加到此视图中,并仅侦听相应控制器中的相关事件。
好的,你是否将所有的控制器添加到你的主应用程序?你知道如何根据活动视图来定义你需要哪些控制器吗? – 2013-05-10 19:00:42
是的,我确实在'Ext.application'' controllers'数组中添加了所有控制器,以便应用程序加载所有这些控制器,并根据控制器的'control'配置找出哪个控制器将侦听触发事件。顺便说一句,我不明白你的问题:'你知道怎么根据活动视图定义你需要哪个控制器吗?'因为控制器的'ref' config是我们定义控制器处理哪些视图的地方。 – ThinkFloyd 2013-05-13 05:39:46
如何编写1000个控制器,每个监听20个事件?它不会像你想象的那么快。确实,通常渲染会给你带来瓶颈,但DeftJS的方式很好。在DeftJs中,您将视图控制器绑定到视图实例。在ExtJS控制器中是单身人士。 – catalinux 2013-06-09 15:35:29
@catalinux。更新了我的答案。 Singleton控制器在extjs中工作正常,即使有多个视图实例。你如何用Deft选择表单中的所有字段? – 2013-06-25 21:21:52