Extjs 初始化和解构控制器的最佳实践

Extjs 初始化和解构控制器的最佳实践,extjs,sencha-touch-2,Extjs,Sencha Touch 2,构建应用程序时,设置控制器的最佳方法是什么 我知道路由、事件侦听器和大多数交互都应该由控制器来管理,但我的主控制器开始失控,我不知道如何最好地将我的逻辑分离到单独的控制器中,而不让它们都“运行”一直以来…我都有类似的问题,因此我根据其支持的业务功能划分了控制器,例如userController执行所有与用户相关的操作,如登录、注销、更新等,而cartController执行与购物车相关的所有操作,如添加到购物车、应用优惠券、,付款等。由于一个视图可以具有与应用程序不同区域相关的许多功能,因此您可

构建应用程序时,设置控制器的最佳方法是什么


我知道路由、事件侦听器和大多数交互都应该由控制器来管理,但我的主控制器开始失控,我不知道如何最好地将我的逻辑分离到单独的控制器中,而不让它们都“运行”一直以来…

我都有类似的问题,因此我根据其支持的业务功能划分了控制器,例如userController执行所有与用户相关的操作,如登录、注销、更新等,而cartController执行与购物车相关的所有操作,如添加到购物车、应用优惠券、,付款等。由于一个视图可以具有与应用程序不同区域相关的许多功能,因此您可以在多个控制器中向该视图添加引用,并仅在相应控制器中侦听相关事件。

在应用程序启动时加载它们是可以的,即使有数十万个控制器。视图渲染需要时间

使用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
        });
    }
});
Ext.application({
    name:'app',
    controllers:[
      'Controller0',
      'Controller1'
       ... 1000 controllers
    ],
    launch:function(){}
}
我将它们连接到一个文件中,并将它们加载到app.js中,如下所示:

Ext.define('app.controller.ControllerN', {
    extend: 'Ext.app.Controller',
    init: function(application) {    
        this.control({
            buttonN1: {
                click: function() {
                }
            },
            buttonN2: {
                click:function(){}
            }, 
            ... 20 listeners
        });
    }
});
Ext.application({
    name:'app',
    controllers:[
      'Controller0',
      'Controller1'
       ... 1000 controllers
    ],
    launch:function(){}
}

从浏览器刷新(Chrome)到调用最后一个控制器的init方法花费了一秒钟的时间。

好的,您是否将所有控制器都添加到主应用程序中?您知道如何根据活动视图定义所需的控制器吗?是的,我会在
Ext.application
控制器
数组中添加所有控制器,以便应用程序加载所有控制器,并根据控制器的
控件
配置确定哪个控制器将侦听激发的事件。顺便说一句,我不明白你的问题:
你知道如何根据活动视图定义你需要的控制器吗?
因为控制器的
ref
配置是我们定义控制器处理哪些视图的地方。写1000个控制器,每个控制器监听20个事件如何?它不会像你想象的那么快。的确,渲染通常会给您带来瓶颈,但是DeftJS方法工作得很好。在DeftJs中,视图控制器绑定到视图实例。在ExtJS中,控制器是单例的。@catalinux。更新了我的答案。单例控制器在extjs中工作良好,即使有多个视图实例。如何使用Deft选择表单中的所有字段?