试图了解Ext.require,Ext.class.requires和Ext.Loader

时间:2014-06-25 14:28:26

标签: extjs extjs4 extjs-mvc

所以我继承了这个extjs 4.1.3项目,我试图理解它。

我注意到Ext.require和Ext.define都需要无处不在。代码是由sencha docs的许多样板代码组成的,我觉得有很多冗余。它会造成很多混乱,我觉得错误的是当我添加一个文件时,我不得不多次添加它(对于Ext.require和Ext.define的要求)。

几个问题:

1)如何确定需求是否真的......需要?根据我的理解,它只告诉网页现在或以后加载一些东西(这可能与问题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'
    ]
});
}

1 个答案:

答案 0 :(得分:1)

在上面的代码中,您只需要controllers:['Controller']。反过来,在控制器文件中,您需要views:[]stores:[]models:[],具体取决于您希望控制器从服务器提取的内容。

另一个例子:假设您编写网格代码并使用数字列,因此您需要在网格配置中使用requires:['Ext.grid.column.Number'

我所做的是我把它放在最低限度,我认为是必需的,然后我看着控制台。我得到一个错误,我修复它或我得到"同步加载"警告说我也修好了。

有关详细信息,请参阅:http://www.sencha.com/blog/countdown-to-ext-js-4-dynamic-loading-and-new-class-system