Ext JS 4.2.1装载控制器-最佳实践

Ext JS 4.2.1 loading controller - best practice

本文关键字:控制器 最佳 JS Ext      更新时间:2023-09-26

我目前正在开发一个具有许多视图/控制器/。。。我想知道加载JS控制器/视图/等等的最佳实践是什么…

目前我的应用程序定义如下:

// 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..
    ]
});

不知何故,这迫使客户端在启动时加载我的所有视图和控制器,并调用所有控制器的所有init方法。。每次更改视图时,我都需要加载数据。。现在我无法在控制器的init函数中加载它。我想我必须做这样的事情:

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

有更好的方法吗?或者只是其他活动?

尽管我在质疑自己的主要问题是,在启动时加载所有javascript是否是最佳实践。最好只加载控制器/视图/。。。客户现在确实需要什么?还是应该在启动时加载所有JS?

如果我真的想动态加载控制器,我该怎么做?我假设a必须将它们从我的应用程序阵列(视图、控制器、存储)中删除,并在我确实需要的情况下创建一个实例,然后在控制器init?!中设置视图?!

什么是最佳实践??

更新

带viewcontroller的deftJS会是一个不错的选择吗?deftJS的主要优点和缺点是什么?

您可以在启动时加载所有控制器。请参阅下面的链接,测试了1000个控制器,速度很快:

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

快速应用程序的最佳选择是使用sencha cmd将所有必需的文件最小化并压缩为一个文件。

您不应该在init中将数据加载到视图中,因为ui还没有加载,如果您愿意,可以在onLoad上加载。

我会在afterrenderactivated事件中加载视图的数据。

理想情况下,您应该使用模块化方法,在模块上调用init()方法,该方法需要该模块的控制器、视图和模型。