Sto scrivendo (con il mio team) un'applicazione GWT, che analizza e rappresenta un linguaggio specifico del dominio - ad esempio, riproduce la presentazione multimediale con controlli di testo, video e UI. Quindi l'applicazione ha un insieme di componenti: quelli - per contenere il modello, quelli - per le routine di controllo (controller) e ovviamente abbiamo le classi per View.Come rendere la tua applicazione GWT plug-in?
Ora abbiamo un problema - lo rendono tutti i plug-in grado, nel senso di:
dovrebbe essere uno nucleo plug-in, che rendono tutta roba comune. Questo blocco coer deve essere un file JavaScript (uno per ogni permutazione)
dovrebbe essere la capacità di estendere classi di base, scrivere quelli personalizzati - e compilarlo per separare il file JS (uno per ogni permutazione)
Ogni plugin deve registrare (esporta le sue classi ecc.) Sulla piattaforma principale, in modo che possa essere utilizzato.
Problemi:
- Come Compila il la roba personalizzato separatamente?
- Come caricare plug-in?
Per il secondo uno problema ho trovato http://code.google.com/p/gwt-exporter/, che esporta le classi GWT al mondo esterno, in modo che potessero essere invocate da JS puri.
Inoltre ho un'idea per creare nuovo modulo per nuovo plugin, quindi sarà compilato per separare il file (primo problema).
Hai un'esperienza di costruzione di tale architettura, hai delle buone pratiche in questo caso?
Oh ... Grazie.Per queste due ore, da quando ho posto una domanda, ho fatto qualche soluzione. Come hai detto, ho creato il modulo Core e l'interfaccia IPlugin, che tutti i plugin dovrebbero implementare. Poi ho aggiunto al file html, sto tagliando, l'inizializzazione di entrambi i moduli. Anche se questa non è la soluzione finale, penso che questo sia un buon inizio. – ajukraine
'Quindi utilizzare GEX esportatore per creare una classe astratta che i plugin devono estendere che avrebbe un metodo astratto che avrebbe preso l'elemento principale del plugin passato al core e popolarlo. "Puoi per favore entrare nei dettagli su questo? stai dicendo che avresti esportato una classe java GWT in javascript (usando gwt exporter), e quindi il modulo plugin dovrebbe (forse da un metodo nativo JSNI) estendere e implementare la classe astratta data? –
Ci sarebbe qualcosa come un PluginManager che esporrà un metodo di registrazione attraverso l'esportatore (questo è in realtà molto semplice tramite JSNI e potrebbe non essere necessario aggiungere la dipendenza di GWT Exporter). AbstractPlugin sarà anche un punto di ingresso che si registrerà con il PluginManager (tramite JSNI/Exporter). AbstractPlugin esporrà anche un metodo inject che accetta un ID elemento da utilizzare come elemento root per istanziare un'istanza del plugin. Aggiungerò alla mia risposta – LINEMAN78