3

我目前正在开发一个带有许多视图/控制器/的 Ext JS 应用程序...我想知道加载 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: function () {
    this.control({
        '#administration_User': {
            afterrender: this.onAfterRender
        }
    });
},

有一个更好的方法吗?还是只是其他事件?

虽然我质疑自己的主要问题是在启动时加载所有 javascript 是否是最佳做法。只加载客户端现在确实需要的控制器/视图/...不是更好吗?或者我应该在启动时加载所有 JS?

如果我确实想动态加载控制器,我该怎么做?我假设必须从我的应用程序数组(视图、控制器、商店)中删除它们并创建一个实例(如果我确实需要它并在控制器 init 中设置视图)?!

什么是最佳做法?

更新

带有视图控制器的 deftJS 会是一个不错的选择吗?deftJS 的主要优点和缺点是什么?

4

1 回答 1

4

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

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

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

您不应该将数据加载到视图中,init因为尚未加载 ui,onLoad如果您愿意,可以这样做。

afterrender我会在事件中加载视图的数据activated

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

于 2013-06-24T22:17:26.213 回答