ExtJS - создание пакета путем расширения классов в приложении
Возможно ли это? Например, myOpenGL
- это пакет, а openGL
- приложение.
Я хотел бы сделать что-то вроде этого:
Ext.define('myOpenGL.view.Qxga',{
extend: 'openGL.view.Uxga',
alias: 'widget.qxga',
itemId: 'qxga',
requires: [
'openGL.view.Uxga',
'myOpenGL.view.QxgaController'
],
controller: 'QxgaController'
});
Так организованы файлы (большинство файлов опущено для ясности):
workspace/
packages/
myOpenGL/
.sencha/
src/
view/
qxga.js <--- the file defining QXGA
package.json
build.xml
openGL/
.sencha/
app/ <--- errors are being generated from here?
app/
view/
uxga.js <--- the file with the class I want to extend
app.json
build.xml
...
Сейчас я получаю неурегулированные ошибки зависимостей, но они, похоже, генерируют приложение, а не пакет (см. сразу после The following error...
):
[ERR] Failed to resolve dependency openGL.view.Uxga for file myOpenGL.view.Qxga
[ERR]
[ERR] BUILD FAILED
[ERR] com.sencha.exceptions.ExNotFound: Unknown definition for dependency : openGL.view.Uxga
[ERR]
[ERR] Total time: 6 seconds
[ERR] The following error occurred while executing this line:
C:\Users\«username»\Applications\Sencha\Cmd\5.1.0.26\plugins\ext\current\plugin.xml:403: The following error occurred while executing this line:
C:\Users\«username»\Documents\workspace\openGL\.sencha\app\build-impl.xml:378: The following error occurred while executing this line:
C:\Users\«username»\Documents\workspace\openGL\.sencha\app\init-impl.xml:303: com.sencha.exceptions.ExNotFound: Unknown definition for dependency : openGL.view.Uxga
Некоторые вопросы:
- Почему возникают ошибки из
workspace\openGL\.sencha\app
? Это packages\myOpenGL
Я пытаюсь построить. Я бы ожидал, что init-impl.xml
из packages
испустит ошибки.
- Я не могу изменить
openGL/app
, должен использовать as-is, но может изменять что-либо в packages
. Также я не могу переместить openGL
, но мог бы создать ярлык для него в packages
или создать переопределения в openGL/overrides
. Зная, что есть ли способ заставить это работать?
Ответы
Ответ 1
Обычно нет, на высоком уровне процесс сборки: пакеты, затем переопределяет пакеты, затем приложения, а затем переопределяет приложение. Если ваш пакет потянет код приложения, то теоретически он может в конечном итоге вытащить все приложение из-за зависимостей, тем самым испортив процесс сборки. Возможно, именно поэтому вы видите ошибки, происходящие из приложения.
Одно из решений - скопировать код приложения, который вам нужен, в ваш пакет, изменить пространство имен, ограничить зависимости и использовать его таким образом.
Еще одно решение - заставить провайдера приложений реорганизовать нужные вам функции в виде пакетов! То есть, повторите использование, что должно быть повторно использовано.
В любом случае, это много работы, но плохая конструкция всегда возвращается, чтобы укусить вас!