Не использовать require в extjs не имеет эффекта загрузки

Я использую 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'
    ],

Если вы видите, требует, я требую несколько классов. Если я уберу все классы в require и оставлю это как

 requires: []

все страницы загружены только правильно. Так какая польза, которую я получаю, добавляя файлы, требует.

1 ответ

Решение

Во-первых, ваше приложение (Application.js) есть список обязательных views а также stores а также controllers, Если ваш контроллер и компонент находятся в этих "глобальных" списках, они уже загружены, когда ваш requires список оценивается, поэтому вы не видите разницы вообще. Если вы повторно используете компонент в других проектах и ​​забыли добавить его в Application.jsВы можете увидеть разницу.

Если они еще не загружены, когда они необходимы, могут произойти три вещи:

  1. xtype еще не зарегистрирован в ComponentManagerтак что если вы создаете xtype, это не удастся ("не удалось разрешить зависимость").
  2. Если вы создаете экземпляр по полному имени, вы можете получить предупреждение о том, что компоненты загружаются синхронно, что медленнее, чем асинхронная загрузка всего requires список сразу.
  3. Если вы создаете экземпляр с использованием переменных, Sencha Cmd полностью не может добавить необходимые файлы в дерево зависимостей, и они могут отсутствовать во встроенном файле. Пример:

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

Поскольку requires list также используется Sencha Cmd для разрешения дерева зависимостей и создания правильного частичного порядка определений компонентов во встроенном js-файле.

Другие вопросы по тегам