没有在extjs中使用require没有加载效果

Not Using requires in extjs has no loading effect

我正在使用 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: []

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

首先,您的应用程序 (Application.js) 有一个必需的 viewsstorescontrollers 列表。如果您的控制器和组件在这些 "global" 列表中,则在评估 requires 列表时它们已经加载,因此您根本看不出有什么不同。如果您在其他项目中重复使用该组件,而忘记将其添加到 Application.js,您可能会看到不同之处。

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

  1. xtype 尚未在 ComponentManager 中注册,因此如果您通过 xtype 实例化,这将失败 ("could not resolve dependency")。
  2. 如果用全名实例化,可能会提示组件是同步加载的,比一次性异步加载整个requires列表要慢
  3. 如果使用变量实例化,Sencha Cmd完全无法将需要的文件添加到依赖树中,并且在构建文件中可能会丢失。示例:

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

因为 requires 列表也被 Sencha Cmd 用来解析依赖树并在构建的 js 文件中对组件定义进行正确的部分排序。