Il motivo è la stabilità .
Sul lato server, posso scegliere componenti stabili. Di solito questo significa che scelgo Java e un sacco di librerie accuratamente selezionate come FreeMarker. Inutile dire che ogni libreria a parte le librerie standard di Java è trattata come usa e getta, quindi accedo alle librerie esterne tramite un wrapper fatto da sé. Ciò significa che posso passare facilmente da una libreria all'altra se si presenta la necessità.
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. Inoltre, ogni server che ho esegue la stessa versione di Java. Non tutti i client eseguono la stessa implementazione JavaScript.
Dal lato client, non posso scegliere componenti stabili. I produttori di browser mi costringeranno a scegliere JavaScript, una lingua che non mi piace particolarmente, ma che sono costretto a usare. (E non parlarmi delle lingue compilate 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 di browser supportate.
La mia soluzione? Eseguo il più possibile l'elaborazione sul lato server e il lato client è solo un wrapper leggero che invia i dati al server e riceve i dati dal server sotto forma di frammenti JSON e HTML. Evita XML; usa invece JSON.
Non faccio il modello lato client; Rendo il contenuto sul server in un frammento HTML che poi assegno usando il.innerHTML
attributo 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).
Lo svantaggio è 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 smartphone. Gli smartphone hanno una durata limitata della batteria, quindi se stai eseguendo un calcolo pesante, è meglio scaricarlo sui tuoi server. Tuttavia, le cose semplici possono essere più efficienti dal punto di vista energetico se eseguite sul lato client perché è possibile evitare l'accesso alla radio. Ma l'argomento principale, la stabilità, può significare che in realtà può avere senso scaricare anche un semplice calcolo sul server.
Come addendum, come già osservato in alcune risposte, guadagni anche sicurezza . Se la logica dell'applicazione è interamente sul lato client, qualcuno può ad esempio stabilire un prezzo per qualsiasi cosa acquisterà dal tuo negozio online.