Definitivamente as novas gerações de desenvolvedores web fazem questão de esquecer as lições do passado e acabam jogando no lixo conhecimentos importantes adquiridos durante décadas de estudos.
Performance importa!
O famoso “Amazon found that every 100ms in added page load time cost them 1% in sales” (“Amazon percebeu que cada 100ms a mais no tempo de carregamento da página custa a eles 1% em vendas”) disseminado nos anos 2000 e outros estudos realizados pelo Google foram usados para estabelecer padrões para se criação sites performáticos para motores de busca como YSlow e Pagespeed, que hoje se concentram no Search Console e Lighthouse. Esses padrões não foram criados a toa, existe uma ciência e muita pesquisa por trás da criação páginas otimizadas, primeiro por questões de retenção, segundo por perda de usuários no carregamento lento. Cada vez mais o usuário não admite esperar alguns segundos para carregar um conteúdo. Eu não vou me aprofundar muito no tema, mas vou deixar um post de 2019 da GigaSpaces sobre o tema que recomendo a leitura:
Problema conceitual do SPA
O conceito de SPA se popularizou com o Angular 1 e foi se estendendo com a criação de frameworks como React, Vue.js, entre outros. A facilidade de implementação usando data binding encanta, porém precisamos analisar um fator importante desse modelo. O SPA tem utilidade, no meu ponto de vista, em aplicações cuja necessidade de indexação seja próxima a zero, por exemplo backend de aplicações, como o painel administrativo do WordPress. Para criar sites, landpages, etc., a coisa muda de figura. É possível usar esses frameworks em formato SSR para criar websites, mas honestamente eu não achei um modelo que bata de frente em performance com o tradicional MVC. Devem existir ferramentas boas para projetos React, Angular e Vue SSR, porém acredito que o custo/beneficio não seja tão vantajoso.
Nem de longe estou fazendo uma critica aos frameworks, acho todos ótimos e utilizo com certa frequência, mas para fins específicos e não como bala de prata para todo projeto web.
Mas, então, com seria uma possível saída para aplicações complexas que exigem boa performance e indexação? Honestamente não tenho essa resposta para o cenário que temos hoje, mas penso que a união desses frameworks com tecnologias de abstração MVC processadas em servidor possa ser uma saída. Como proponho no meu post sobre reatividade para web, a aplicação do conceito usa uma camada de MVC que renderiza os dados no HTML e atualiza as informações em uma espécie de data binding reativo. Eu iniciei alguns estudos sobre o tema criando um pequeno sample de implementação do conceito, vou deixar aqui o paper e o repositório para análise dos colegas:
Fiquem a vontade para sugerir melhorias e discutir sobre o tema, a final estamos aqui para aprender e somar conhecimento, não é mesmo?