Il motivo è stabilità .
Dal lato server, posso scegliere componenti stabili. Di solito questo significa che scelgo Java e un mucchio di librerie molto attentamente selezionate come FreeMarker. Inutile dire che ogni libreria, a prescindere dalle librerie standard di Java, viene trattata come usa e getta, quindi accedo alle librerie esterne tramite un wrapper self-made. Ciò significa che posso cambiare facilmente da una libreria all'altra se si presenta il bisogno.
Ogni volta che aggiorno Java a una nuova versione, di solito funziona bene perché Java è un componente estremamente stabile anche attraverso i principali aggiornamenti di versione. E inoltre, ogni server che ho sta eseguendo la stessa versione di Java. Non tutti i client eseguono la stessa implementazione JavaScript.
Sul lato client, non posso scegliere componenti stabili. I produttori di browser mi obbligheranno a scegliere JavaScript, un linguaggio che non mi piace particolarmente, ma che sono obbligato a usare. (E non parlarmi di linguaggi compilati in JavaScript, sono orribili!) L'implementazione JavaScript di ogni browser è diversa. Ciò significa che è un vero inferno testare il mio prodotto con tutte le versioni supportate del browser.
La mia soluzione? Eseguo il maggior numero di elaborazioni possibile sul lato server e il lato client è solo un involucro leggero che invia i dati al server e riceve i dati dal server sotto forma di frammenti JSON e HTML. Evitare XML; usa invece JSON.
Non faccio il template sul lato client; Rendo il contenuto del server su un frammento HTML che poi assegno utilizzando l'attributo .innerHTML
a vari elementi segnaposto sul lato client. Ciò mantiene lo stack tecnologico il più semplice possibile, perché non ho bisogno di due motori di template (uno Java e uno JavaScript).
L'inconveniente è ovviamente la latenza della velocità della luce; mezzo secondo di latenza non è raro tra i continenti.
Considera che i tuoi clienti in questi giorni potrebbero essere gli smartphone. Gli smartphone hanno una durata limitata della batteria, quindi se stai facendo calcoli pesanti, meglio scaricarlo sui tuoi server. Tuttavia, le cose semplici possono essere più efficienti dal punto di vista energetico quando vengono eseguite dal lato client, perché in tal caso è possibile evitare l'accesso radio. Ma l'argomento principale, la stabilità, potrebbe significare che in realtà potrebbe avere senso scaricare anche il calcolo semplice sul server.
Come appendice, come già osservato in alcune risposte, ottieni anche sicurezza . Se la logica dell'applicazione è interamente sul lato client, qualcuno può ad es. impostare un prezzo per qualsiasi cosa che stanno per acquistare dal tuo negozio online.