2013-04-21 5 views
5

C'è un'opinione che durante la creazione di applicazioni browser avanzate (JS-pesanti) dovrebbe essere trattato come applicazione separata non come parte dell'app "back-end". Mi chiedo come viene realizzata la build e la distribuzione in questo setup?Applicazione di frontend separata - strategie di compilazione e implementazione

Suppongo di avere un file WAR java che espone l'API basata su JSON (sia JAX-RS o qualsiasi altra cosa) - nessuna vista. Poi ho il contenuto statico per la mia app di frontend: js script html views, css styles, images ecc. Potrei usare lo strumento dedicato di build, ad es. GruntJS per quel progetto di minify/preprocess ecc.

Ma ora sono un po 'bloccato. Quale dovrebbe essere il risultato di tale build? WAR separato con solo file statici creati da Grunt? Che dire della distribuzione? Dovrei mescolare questi WAR insieme in un'unica app in piena regola o distribuire due separati ad es. example.com serve statico e quelle statiche usano api.example.com per ottenere i dati.

Un'altra domanda riguarda lo sviluppo. Di conseguenza mi piacerebbe avere i miei js e css concatenati e minimizzati, ma non è così buono per lo sviluppo (il debug è difficile ecc.). C'è qualche trucco per avere file sorgente separati in modalità dev e concatenati solo su prod build?

risposta

0

Non mi sono dilettato in Java WebDev per sempre, quindi non sarei in grado di aiutarti con le specifiche. Ma l'idea alla base di tali astrazioni è solitamente quella di esporre un'API pubblica di back-end, e quindi essere in grado di connettersi al back-end con qualsiasi tipo di client scritto in qualsiasi lingua che risieda su qualsiasi host. Se ti capita di sviluppare l'API e il client, la tua domanda dovrebbe essere se c'è sempre la possibilità che client e API debbano essere distribuiti separatamente. Se c'è, costruisci separatamente. Se no, non farlo. Personalmente, preferirei lo scenario api.example.com e example.com.

Riguardo al secondo argomento: Una volta ho creato uno script ANT per fare esattamente questo. Avere le "Classi" JS in file "namespace" separati e lasciare che lo script si concateni e minimizzarli. Dovevi inserire i file nell'ordine corretto nello script di compilazione, che è facilmente gestibile in piccoli progetti. Idk se ci sono strumenti automatici per questo ormai.