2016-01-08 27 views
11

È possibile? Ad esempio, myOpenGL è un pacchetto e openGL è un'app.ExtJS - creazione di un pacchetto estendendo le classi in un'app

mi piacerebbe fare qualcosa di simile:

Ext.define('myOpenGL.view.Qxga',{ 
    extend: 'openGL.view.Uxga', 
    alias: 'widget.qxga', 
    itemId: 'qxga', 
    requires: [ 
      'openGL.view.Uxga', 
      'myOpenGL.view.QxgaController' 
    ], 
    controller: 'QxgaController' 
}); 

Questo è come sono organizzati i file (maggior parte dei file omesse per chiarezza):

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 
     ... 

In questo momento ricevo errori di dipendenze irrisolte , ma sembrano generare dall'app anziché dal pacchetto (vedere subito dopo 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 

Alcune domande:

  • Perché gli errori generano da workspace\openGL\.sencha\app? È packages\myOpenGL che sto cercando di costruire. Mi aspetto che init-impl.xml da packages emetta gli errori.
  • Non riesco a modificare openGL/app, deve utilizzare così com'è, ma può modificare qualsiasi cosa in packages. Inoltre, non posso spostare openGL ma potrei creare un collegamento ad esso in packages, o posso creare sostituzioni in openGL/overrides. Sapendo che c'è un modo in cui posso farlo funzionare?

risposta

2

Generalmente, a un livello elevato, il processo di compilazione è: pacchetti, quindi sovrascrittura pacchetto, quindi app, quindi sovrascrittura app. Se il tuo pacchetto sta inserendo il codice dell'app, in teoria potrebbe finire per trascinare tutta l'app a causa delle dipendenze, compromettendo così il processo di compilazione. Forse è per questo che stai vedendo errori provenienti dall'app.

Una soluzione è copiare il codice dell'app necessario nel pacchetto, modificare lo spazio dei nomi, limitare le dipendenze e utilizzarlo in questo modo.

Un'altra soluzione è far sì che il fornitore di app riorganizzi le funzionalità di cui hai bisogno come pacchetti! Cioè, rendi riutilizzabile ciò che dovrebbe essere riusabile.

In entrambi i casi, è molto lavoro, ma il cattivo design torna sempre a morderti!