Подтвердить что ты не робот

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. Зная, что есть ли способ заставить это работать?
4b9b3361

Ответ 1

Обычно нет, на высоком уровне процесс сборки: пакеты, затем переопределяет пакеты, затем приложения, а затем переопределяет приложение. Если ваш пакет потянет код приложения, то теоретически он может в конечном итоге вытащить все приложение из-за зависимостей, тем самым испортив процесс сборки. Возможно, именно поэтому вы видите ошибки, происходящие из приложения.

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

Еще одно решение - заставить провайдера приложений реорганизовать нужные вам функции в виде пакетов! То есть, повторите использование, что должно быть повторно использовано.

В любом случае, это много работы, но плохая конструкция всегда возвращается, чтобы укусить вас!