Не использовать 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
Вы можете увидеть разницу.
Если они еще не загружены, когда они необходимы, могут произойти три вещи:
xtype
еще не зарегистрирован вComponentManager
так что если вы создаетеxtype
, это не удастся ("не удалось разрешить зависимость").- Если вы создаете экземпляр по полному имени, вы можете получить предупреждение о том, что компоненты загружаются синхронно, что медленнее, чем асинхронная загрузка всего
requires
список сразу. Если вы создаете экземпляр с использованием переменных, Sencha Cmd полностью не может добавить необходимые файлы в дерево зависимостей, и они могут отсутствовать во встроенном файле. Пример:
var doWindow = true; var component = doWindow?'Ext.Window':'Ext.panel.Panel'; Ext.create(component,{ ... });
Поскольку requires
list также используется Sencha Cmd для разрешения дерева зависимостей и создания правильного частичного порядка определений компонентов во встроенном js-файле.