Eu não vou falar de empecilhos, vou começar do ponto de vista físico/energético.
Vamos dizer que você faça a renderização, no servidor, assim, você vai aumentar o gasto com a conta elétrica certo?
Então se você gastou + energia, infima mesmo, você realizou um pouco a mais de processamento, coisa irrelevante, pra 20, 30 mil pessoas.
Pegue esse mesmo servidor e coloque 200 milhões de úsuarios, assim, o processamento ínfimo é multiplicado por um valor alto, logo, você vai pensar em uma forma de melhorar o desempenho da aplicação e começa a pensar em quais processos poderiam ser distribuídos de forma mais eficiente.
Assim, imagine que o lado do cliente, não recebe a página renderizada, ele recebe um PROTOCOLO, lê e monta a página que veio “PRONTA” do servidor, como é comum em PHP.
Tem problema?
Não sei, depende da necessidade (não estou com ironia. vide: lógica difusa).
Se a necessidade é melhorar o desempenho para 200 milhões, joga o PROTOCOLO pro cliente e ele que se vire para montar a página, pois ambos conhecem o protocolo de comunicação.
Qual a consequência:
O servidor não vai gastar energia fazendo o que a view pode fazer.
Lembra da tautologia.
Se você não renderizar no servidor, o cliente faz.
Se você renderizar no servidor, no final o cliente também o faz.
Percebeu?
O cliente faz de qualquer forma.
Vamos banalizar:
servidor.processaNegocios();//throws exception :joy:
if(servidor.renderiza()){
servidor.consomeRecursos();
servidor.protocoloTo(cliente);
cliente.renderiza();
cliente.consomeRecursos();
}else{
servidor.protocoloTo(cliente);
cliente.renderiza();
cliente.consomeRecurso();
}
…
Do ponto de vista lógico, o ideal seria:
servidor.processaNegocios();//throws exception :cry:
servidor.protocoloTo(cliente);
cliente.renderiza();
cliente.consomeRecursos();
Se aplicar, lógica, grafos, matemática e física qual você escolhe?
Existe impedimento do ponto de vista de linguagens/ferramentas/frameworks?
Só pra ler a primeira abordagem, VOCÊ pessoa, gastou quantos recursos, lógicos, físicos e TEMPO?
Será que o **SISTEMA -> cliente/servidor/protocolo/etc ** não gastou mais recursos que o necessário?
Computadores não fazem mágica, eles consomem recursos físicos e energéticos.
Ou seja, se eu tiver que procurar alguma fonte para melhorar o desempenho, já começo por outras coisas.
Mas, se a “arquitetura” não suporta vai o que tem:
servidor.processaNegocios() && servidor.renderiza() && servidor.protocoloTo(cliente) && cliente.renderiza().
Veja, se a comunicação acontece por meio de protocolo, ou seja, o cliente não recebe uma página pronta ele vai montar uma de qualquer forma, talvez a comodidade justifique, mas posso estar errado, sei lá.
O que eu mostrei é a finalidade “absoluta”: facadeRenderizarNoCliente() e evitar o consumo de recursos energéticos incluindo o tráfego para a mesma finalidade, que vai acontecer de qualquer forma, pois quem tem que garantir isso é o protocolo de comunicação.
Mas ai é pra quem entende, não é meu caso .
Acho que essa separação entre front-end e back-end provocou a perda da visão sobre O TODO (o sistema completo), bem como de seu funcionamento.
Acho que nem o mercado sabe o que é um full-stack, nem eu. #MVC -> protocolo - persistente.