【发布时间】:2014-06-25 14:28:26
【问题描述】:
所以我继承了这个 extjs 4.1.3 项目,我正在尝试理解它。
我注意到 Ext.require 和 Ext.define 都需要无处不在。该代码由 sencha docs 中的大量样板代码组成,我觉得有很多冗余。它造成了很多混乱,我觉得当我添加一个文件时,我必须多次添加它(到 Ext.require 和 Ext.define 要求)是错误的。
几个问题:
1) 我如何判断一个 require 是否真的是……必需的?据我了解,它只是告诉网页现在或以后加载一些东西(这可能与问题3有关)。如果需要这些文件,我能保证看到来自 Ext 的警告说“你应该包括 abc”吗?
2) Ext.require 和 Ext.define 要求之间有什么区别吗?我需要两者吗?如果我只需要一个,是不是比另一个更“标准”?
3) "Ext.Loader.setConfig({enabled: true});" 究竟是什么?做?我猜如果我不特别需要它们,让 ext 动态加载东西。那我不应该根本不需要需求吗?我并不是说这是一种好习惯,但这是真的吗?实际上,如果有的话,是不是在使用这种不好的做法?如果你没有把它们写下来,你最终会失去对依赖关系的追踪。或者您是否“信任” Ext.Loader 来处理与依赖项相关的所有事情,这样您甚至不必担心它。
我之所以问是因为我认为这是真的,但经过以下经验,我认为不是。
我以为我明白了这一点,但显然我对 Ext.Loader(问题 3)的解释是错误的,因为如果我注释掉我的所有要求,我会得到
[07:15:05.577] Error: [Ext.createByAlias] Cannot create an
instance of unrecognized alias: layout.border
如果我取出 'Ext.layout.*.如果有 Ext.Loader.setConfig({enabled: true}) 怎么不动态加载?
TLDR:我不知道何时使用 Ext.require/Ext.define 要求是安全/良好的做法。如果我没有看到任何警告并且我的应用程序正常工作,这是否意味着我很好,或者是否仍有可能“加载”某些内容? Ext.Loader.setConfig({enabled: true}) 是做什么的?
编辑:这是一个示例:app.js 文件。只是感觉很啰嗦不是吗?
Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', 'ux');
Ext.require([
'Ext.layout.*',
'Ext.ux.*',
'Ext.grid.*',
'APP.controller.Controller',
'APP.view.MapPanel',
'APP.view.FilterPanel',
'APP.view.Viewport'
]);
var start_app = function() {
var app = Ext.application({
name: 'APP',
appFolder: 'app',
requires: [
],
autoCreateViewport: true,
uses: [
'APP.controller.Controller',
'APP.view.MapPanel',
'APP.view.FilterPanel',
'APP.view.Viewport'
],
launch: function() {
},
controllers: [
'APP.controller.Controller'
]
});
}
【问题讨论】: