2017-01-23 2 views
1

Во время разработки я запускаю свое приложение с помощью «sencha app watch», и у меня не было ошибок. Но когда я создаю свое приложение с помощью «тестирования сборки приложений sencha», я получил ошибку для разных стандартных компонентов: для combobox, hiddenfield, fieldcontainer. Я решил это, добавив имена классов компонентов в раздел «require». Мой вопрос: почему я должен делать этот трюк? И что не так с этими полями? Потому что для текстового поля у меня не было никаких ошибок. Я использую ext js 6.2.0. gpl versionНераспознанное имя класса/псевдоним widget.combobox (hiddenfield, fieldcontainer, ...)

ответ

1

Требуется: Загружает все классы по заданным именам и всем их прямым зависимостям.

Эта ошибка очень распространена, и обычно это происходит из-за того, что требуемый компонент Ext не загружен или одна из его прямых зависимостей не загружается перед использованием компонента.

  1. В развитии создана, мы имеем установку Ext в нашем рабочем пространстве
    обычно делает его легко вытащить зависимости требуется.

  2. В случае производства или тестирования он не может загрузить файл, или загрузить одну из своих прямых зависимостей, вызвав эту проблему.

  3. В основном эти зависимости динамически загружаются.

Это всегда лучшая практика, чтобы убедиться, что вы используете требуется для любого компонента, который вы используете.

Это означает, что нет ничего плохого в том, что какой-либо из компонентов вызывает только некоторую проблему с загрузкой из-за того, что они связаны внутри.

1

Когда вы используете версию ExtJS для разработки, она основана на файле app-all.js, который содержит большинство, если не все, классы ExtJS и имеет размер 2 МБ (9 МБ незавершенных). Поэтому, как только этот файл загружен, все они полностью доступны.

При компиляции версии ExtJS Sencha Cmd строит дерево зависимостей требуемых классов, чтобы свести размер полученного app.js к минимуму (в моем приложении оно уменьшено на 1,1 МБ).Для этого дерева зависимостей, он начинается в файле app.js и рассматривает определения в классах:

и в контроллерах:

но не в другом месте, например:

  • Ext.create() (которые могут быть разбросаны вокруг вашего кода, если вы строите ваши компоненты динамически)
  • xtype в comp оленье дерево.
Смежные вопросы