Ho usato questa tecnica esclusivamente per un'applicazione web su cui stiamo lavorando. Il mio back-end è ospitato su Google App Engine tramite Java SDK e il mio front-end utilizza HTML, CSS e JavaScript (con jQuery).
Il progetto è più piccolo con solo me stesso e un web designer, ed entrambi riteniamo che questo metodo ci abbia aiutato a lavorare molto più velocemente e ad ottenere qualcosa sul mercato molto prima.
Vantaggio: lavorare con i web designer
Il vantaggio principale di questa tecnica è che il web designer, che conosce un po 'di PHP ma non si considera un programmatore, può lavorare senza restrizioni in HTML e CSS senza dover guadare innumerevoli linee di JSP, tag taglib e altri lato server il markup che ci è stato detto per anni dovrebbe rendere la vita di uno sviluppatore front-end molto più semplice.
Senza tutto il markup sul lato server, siamo stati più agili. Il web designer ha sostituito e rivisto direttamente il suo progetto originale 3 o 4 volte, con pochissime modifiche da parte mia.
Il suo commento per me era che sentiva che l'HTML era vivo in quanto poteva modificarlo e quindi vedere immediatamente le modifiche sulla sua macchina con dati dinamici. Ne abbiamo entrambi i benefici in quanto l'integrazione è per lo più automatica.
Codici lato server e handoff HTML / CSS
In progetti passati, ha dovuto consegnare HTML e CSS a sviluppatori Java che avrebbero poi preso il suo HTML e CSS e riscritto completamente usando la tecnologia JSP. Ciò richiederebbe molto tempo e di solito comporterebbe differenze sottili ma importanti nel rendering effettivo delle pagine, nonché la sua convalida nel validatore W3C.
Nel complesso, siamo entrambi abbastanza soddisfatti di questa tecnica e ho ancora zero pagine JSP o codice lato server nelle mie pagine HTML.
Insidie della tecnica REST / JSON
Forse le insidie più grandi sono quelle che non abbiamo ancora incontrato. Mi aspetto pienamente di essere in disaccordo con gli sviluppatori Java più esperti a cui è stato fatto il lavaggio del cervello da ciò che la fondazione Apache e il team di Spring hanno detto loro su come le librerie di tag rendono più semplice per gli sviluppatori frontend lavorare con il codice. Mi aspetto pienamente che ci sarà una curva di apprendimento mentre questo progetto si espande e assumiamo più sviluppatori che potrebbero dover disimparare queste tecniche obsolete che, nella mia esperienza, hanno reso il lavoro dei progettisti Web più difficile .
Un altro inconveniente è che il codice JavaScript è diventato molto massiccio. Questo è più un problema forse perché sto usando questa tecnica per la prima volta e perché abbiamo introdotto un leggero debito tecnico nel lavorare verso un rilascio rapido. Forse la scelta di un framework migliore avrebbe contribuito ad alleviare gran parte del codice. A mio avviso, nulla di tutto questo è stato uno spettacolo, e sono incoraggiato a continuare a utilizzare questa tecnica e affinare le mie capacità in questo settore.
Vantaggio: altre applicazioni possono essere costruite sulla piattaforma
Infine, dovrei menzionare un vantaggio nascosto. Poiché esiste un buon grado di separazione tra i miei servizi Web RESTful backend e il mio frontend, ho anche creato una piattaforma che posso facilmente estendere.
Una delle nostre operazioni ragazzi voleva provare una prova di concetto in un'altra applicazione e, grazie ai miei servizi RESTful, siamo stati in grado di creare un frontend completamente diverso all'applicazione per risolvere un problema completamente diverso. La dimostrazione del concetto sviluppata rapidamente utilizzava proprio HTML, CSS e JavaScript, ma utilizzava i servizi RESTful come backend e origine dati.
Alla fine, un altro project manager ha visto quello che avevo fatto ed è diventato subito chiaro che la funzione doveva essere più di una semplice dimostrazione del concetto, quindi il suo team l'ha implementata.
Non posso sottolineare abbastanza quanto sia riutilizzabile questa architettura, sia a livello di applicazione che a livello di HTML / CSS / JavaScript, e ti incoraggio sicuramente a provare questo nel tuo prossimo progetto.