Separazione del front-end dal back-end - Tomcat

7

Attualmente sto lavorando con un'azienda che utilizza Java / Tomcat / Spring per il back-end delle nostre applicazioni web. Come sviluppatore front-end, sento sempre più strong che il back-end dovrebbe essere un progetto separato dal front-end, per alcuni motivi:

1) Creazione del progetto - molti progetti moderni creati con grunt e altri strumenti front-end. Gli obiettivi di build front-end (concatenazione, minification, test front-end, CSS di pre-elaborazione) sono completamente diversi dagli obiettivi back-end (compilazione del codice java, superamento dei back end test, implementazione su un server di integrazione continua)

2) Distribuzione: quando si esegue il commit di un file javascript o html nel repository git, non ha senso che il nostro strumento di distribuzione continui ricostruisca e ridistribuisca l'intero progetto, ma non ha modo di distinguere tra un commit front-end e un commit back-end.

Quindi, come ristruttureresti un progetto precedentemente distribuito automaticamente da un singolo file di guerra, vivendo in un singolo repository git, per creare un back-end e un front-end separati? Posso farlo davvero, dato che usiamo il framework Spring?

In questo momento, i miei file vivono in una miscela della directory /webapp/WEB-INF (per i modelli html pages / velocity) e la directory /webapp/resources per tutto il resto (js, css, images). Sono un po 'confuso su come dovrei fare questo quando tomcat distribuisce una grande mole di file nella directory /target , pure? Se tengo un repository git separato per i file front-end, non verrà cancellato se re-distribuisco il progetto back-end?

(Originariamente provengo da uno sfondo Apache, dove sembrava così bello e semplice ...)

    
posta yochannah 30.12.2013 - 12:57
fonte

1 risposta

14

In jClarity abbiamo sicuramente seguito questo approccio. Abbiamo un front-end HTML5 "puro": AngularJS, HTML, CSS e una serie di micro framework Javascript, che è un progetto separato per il backend - vert.x con una varietà di vertici codificati in lingue JVM separate a seconda dei casi.

Il trucco è di avere un'API di messaggistica ben definita tra i due che sono testati da test di integrazione in stile JUnit / TestNG (backend) e test di Jasmine / Selenium (front-end).

Ha funzionato veramente per noi, una grande separazione delle preoccupazioni con l'unica dipendenza dall'API di messaggistica tra il front-end e il back-end. Usiamo un po 'di magia Maven per verificare che le dipendenze siano corrette tra i due e tra i test end to end.

Nonostante i costi iniziali nell'ottenere questo set-up, sono stato sorpreso di vedere con quale rapidità è possibile aggiungere nuove funzionalità con sicurezza utilizzando questo approccio strutturato. Ancora meglio, non c'è nessuna logica UI / View puzzolente nel nostro codice lato server e viceversa.

Insomma, lo consiglio vivamente: -).

    
risposta data 30.12.2013 - 14:06
fonte

Leggi altre domande sui tag