0

我正在使用 CMD 和 extjs。在我的 Main.js 我有类似的东西

Ext.define('Abc.view.main.Main', {
    extend: 'Ext.panel.Panel',
    xtype: 'app-main',
    header:{
        height: 25,
        titleAlign: 'center',
        title: 'new tile,
        padding: '0 0 0 10'
    },
    requires: [
        'Abc.view.main.MainController',
        'Abc.view.main.Component'
    ],

如果您看到需要,我需要一些课程。如果我删除 requires 中的所有类并保留它

 requires: []

所有页面仅正确加载。那么通过在需要中添加文件我得到了什么好处。

4

1 回答 1

2

首先,您的应用程序 ( Application.js) 有一个必需的和views列表。如果您的控制器和组件在这些“全局”列表中,则在评估列表时它们已经加载,因此您根本看不到任何差异。如果您在其他项目中重用该组件,而您忘记将其添加到 中,您可能会看到不同之处。storescontrollersrequiresApplication.js

如果它们在需要时尚未加载,可能会发生三件事:

  1. xtype尚未向 注册,ComponentManager因此如果您通过 实例化xtype,这将失败(“无法解决依赖关系”)。
  2. 如果按全名实例化,可能会得到组件同步加载的警告,这比requires一次异步加载整个列表要慢。
  3. 如果使用变量实例化,Sencha Cmd 完全无法将所需的文件添加到依赖关系树中,并且它们可能在构建文件中丢失。例子:

    var doWindow = true;
    var component = doWindow?'Ext.Window':'Ext.panel.Panel';
    Ext.create(component,{
        ...
    });
    

因为requiresSencha Cmd 也使用该列表来解析依赖关系树并在构建的 js 文件中对组件定义进行正确的偏序。

于 2016-06-29T07:12:10.207 回答