我目前正在开发一个带有许多视图/控制器/的 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 的主要优点和缺点是什么?