【发布时间】:2013-06-24 16:20:26
【问题描述】:
我目前正在开发一个带有许多视图/控制器/...的 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 函数中。我假设我必须做这样的事情:
init: function () {
this.control({
'#administration_User': {
afterrender: this.onAfterRender
}
});
},
有没有更好的方法来做到这一点?还是只是其他事件?
虽然我质疑自己的主要问题是在启动时加载所有 javascript 是否是最佳做法。只加载客户端现在确实需要的控制器/视图/...不是更好吗?或者我应该在启动时加载所有 JS?
如果我确实想动态加载控制器,我该怎么做?我假设必须从我的应用程序数组(视图、控制器、存储)中删除它们并创建一个实例,如果我确实需要它并在控制器 init 中设置视图?!
最佳做法是什么??
更新
deftJS 及其视图控制器会是一个不错的选择吗? deftJS 的主要优缺点是什么?
【问题讨论】:
标签: javascript extjs extjs4.2 dynamic-loading deftjs