Domanda

Ho alcuni file JavaScript, un file HTML principale, un file CSS principale, e alcuni file CSS che vengono importati in quello principale.

ho capito che posso mettere i file statici in due posti: a) la cartella 'guerra'; oppure b) la cartella 'pubblica'.

Dove è il posto migliore per mettere i miei file statici? Sono le due posizioni trattati in modo diverso? C'è una 'best practice' su questo tema?

È stato utile?

Soluzione

La differenza tra le 2 posizioni è che i file nelle cartelle pubbliche vengono copiati dal compilatore GWT nella cartella 'modulo' nella cartella 'guerra'. Questo è un mezzo se si distribuisce la 'guerra' (ad esempio, tramite il plugin di Google per l'AppEngine di Google) i file dalla cartella 'pubblico' non sono al livello superiore.

Per esempio, se si dispone di un index.html nella cartella 'pubblica' con modulo GWT chiamato 'mymodule' e di distribuirlo a www.example.com sembra che segue, è necessario accedervi tramite:

www.example.com/mymodule/index.html

Se avete l'index.html nella cartella 'guerra', si ottiene:

www.example.com/index.html

Riassumendo. La pagina di destinazione dovrebbe essere nella cartella 'guerra'. file di risorse utilizzati dal pagina di destinazione possono anche essere memorizzati qui (CSS, immagini). Qualsiasi altro file di risorse che viene citata in qualsiasi file di modulo GWT (o codice, come le immagini) deve essere conservato nella cartella 'pubblica' relative al modulo GWT.

Altri suggerimenti

Il nuovo modo di lavorare in GWT è quello di utilizzare la cartella guerra.

Ma, se progetto è una libreria di widget riutilizzabile che viene utilizzato in un'applicazione GWT allora si dovrebbe mettere le risorse nella cartella pubblica. Il compilatore farà in modo che i file vengono automaticamente inclusi nel pacchetto generato.

Come la vedo io, dipende dalle vostre esigenze, ma cominciamo ad un esempio parlando prima ...

documentazione (dovrebbe essere GWT 2.6.0) su questi erronei o almeno incompleto / confusione. Come la vedo io ( Non sono un guru quindi per favore mi corregga se le mie indagini sono sbagliati! ) sto guardando il seguente esempio struttura proj

myproj/
  src/my/gwtproj/
     client/
       img/
         foo1.png
       AppClientBundle.java
       foo2.png
     public/
       img/
         foo3.png
       foo4.png
  war/
    img/foo5.png
    foo6.png
  .classpath
  .project

Immaginate possiamo (o non può) necessario fare riferimento a tali risorse in qualche interfaccia AppClientBundle (o altro contesto di riferimento applicazione):

interfaces AppClientBundle extends ClientBundle {

  @Source("img/foo1.png")
  ImageResource fooImg();
}

Poi sembra che dipendono dai requisiti , per esempio:.

  • R.a) queste risorse (come immagini) è refered nel codice dell'applicazione , per esempio nella nostra interfaccia AppClientBundle tramite annotazioni @Source
  • R.b) queste risorse devono essere raggruppati per cartelle , per esempio foo2.png vs. img/foo1.png
  • R.c) queste risorse dovrebbero essere disponibili al di fuori alcuni specifici contesto sentiero URL dell'applicazione, ad esempio, se utilizzato come libreria di widget, per esempio http://host1/gwtapp1/foo4.png vs. http://host1/gwtapp2/foo4.png
  • R.d) queste risorse devono essere un'applicazione indipendente (ad esempio esternamente) URL di riferimento, ad esempio http://host1/gwtapp1/foo4.png vs. http://host1/foo6.png

Ecco cosa si può fare ( Possibilità ) ed è implicazioni per quanto riguarda R * di cui sopra:.

  • P.1) ( generalmente raccomandato come la vedo io ) mettere ben risorse di cartelle strutturate sotto my.gwtproj.client (qui ad esempio foo1.png )
    • questo modo @Source("img/foo1.png")... funziona bene
    • nella documentazione di cui sopra hanno speek su alcuni cartella public (nel mio caso my.gwtproj.public), ma la creazione è come un pacchetto in Eclipse non mi consente questo (dal public è un Java riservata parola d'ordine , ma la creazione di esso tramite le opere vista Navigator)
      • tuttavia, in questo modo il @Source sopra non funziona (probabilmente perché si tratta di un problema con la posizione relativa del file system AppClientBundle)
      • , tuttavia, se la risorsa dovrebbe essere a disposizione del pubblico nel contesto di applicazione si può avere a farlo tramite questa cartella public
  • P.2) mettere risorse "non raggruppati" direttamente sotto myproj/war , per esempio projdir/war/foo6.png
    • questo modo può essere utilizzato / trovati all'interno annotazioni, ad esempio @Source
    • e può essere fatto riferimento al di fuori della stessa applicazione tramite ad esempio http://host1/foo6.png
  • P.3) mettere risorse di cartelle strutturate sotto myproj/war , per esempio projdir/war/img/foo5.png
    • in contrasto con P.2) @Source("img/foo5.png") non funzionerebbe più
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top