Ho usato questa tecnica esclusivamente per un'applicazione web su cui stiamo lavorando. Il mio back-end è ospitato su Google App Engine utilizzando Java SDK e il mio frontend utilizza HTML, CSS e JavaScript (con jQuery).
Il progetto è più piccolo con solo me stesso e un web designer, e entrambi riteniamo che questo metodo ci abbia aiutato a lavorare molto più velocemente e a 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 essere ingannato in HTML e CSS senza dover guadare attraverso infinite linee di JSP, tag taglib e altro il markup lato server che ci è stato detto per anni è supposto per rendere la vita dello sviluppatore front-end molto più facile.
Senza tutto il markup lato server, siamo stati più agili. Il web designer è stato scambiato direttamente e modificato il suo progetto originale 3 o 4 volte, con pochissime modifiche da parte mia.
Il suo commento a me è stato che si sentiva come se l'HTML fosse vivo in quanto poteva modificarlo e quindi vedere immediatamente i cambiamenti sulla sua macchina con dati dinamici. Abbiamo entrambi beneficiato di questo in quanto l'integrazione è prevalentemente automatica.
Codice lato server e Handoff HTML / CSS
Nei progetti passati, ha dovuto trasferire gli sviluppatori HTML e CSS agli sviluppatori Java che avrebbero poi preso il suo codice HTML e CSS e lo avrebbero riscritto completamente utilizzando la tecnologia JSP. Ciò richiederebbe un sacco di tempo e di solito si tradurrebbe in differenze sottili ma importanti nel rendering effettivo delle pagine e nella convalida del validatore W3C.
Nel complesso, siamo entrambi abbastanza contenti di questa tecnica e nelle pagine HTML non ho ancora pagine JSP o codice lato server.
Trappole della tecnica REST / JSON
Forse le più grandi insidie sono quelle che non abbiamo ancora incontrato. Mi aspetto di avere qualche disaccordo con gli sviluppatori Java più esperti che sono stati sottoposti al lavaggio del cervello da ciò che la fondazione Apache e il team di Spring hanno detto loro su come le librerie di tag rendano più facile agli sviluppatori di frontend lavorare con il codice. Mi aspetto che ci sia una curva di apprendimento man mano che questo progetto si espande e assumiamo altri sviluppatori che potrebbero dover disimparare queste tecniche obsolete che, nella mia esperienza, ha reso il lavoro dei progettisti Web più difficile .
Un altro trabocchetto è 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 una rapida pubblicazione. Forse scegliere un quadro migliore avrebbe aiutato ad alleviare gran parte della maggior parte del codice. A mio parere, nessuno di questi è stato un ostacolo e sono incoraggiato a continuare ad usare questa tecnica ea perfezionare le mie capacità in questo settore.
Vantaggio: è possibile creare altre applicazioni sulla piattaforma
Infine, dovrei menzionare un vantaggio nascosto. Poiché esiste un buon grado di separazione tra i miei servizi Web RESTful e il mio frontend backend, ho anche creato una piattaforma che posso facilmente estendere.
Una delle nostre operazioni, i ragazzi volevano provare un proof of concept in un'altra applicazione, e grazie ai miei servizi RESTful, siamo stati in grado di creare un frontend completamente diverso per l'applicazione per risolvere un problema completamente diverso. La dimostrazione del concetto rapidamente sviluppata usava il proprio HTML, CSS e JavaScript, ma utilizzava i servizi RESTful come back-end e origine dati.
Alla fine, un altro project manager ha visto quello che avevo fatto e divenne subito chiaro che la funzione doveva essere più di una semplice dimostrazione di concept, quindi il suo team l'ha implementata.
Non posso sottolineare abbastanza quanto sia riutilizzabile questa architettura, sia a livello di applicazione che HTML / CSS / JavaScript, e sicuramente ti incoraggerei a provare questo nel tuo prossimo progetto.