Por que não usarei Next.js
Começo com o Post de @kentcdodds: Why I Won't Use Next.js: "Muita magia - Você já ouviu falar do Princípio da Menor Surpresa?"
Pois bem, Recentemente, o Next.js 14 foi lançado e gostaria de comentar sobre a extensão web fetch API. Essa atualização me fez lembrar do passado, revivendo a forma como eu costumava trabalhar com PHP. Acredito que o Next.js está seguindo por um caminho obscuro ao esticar a função global fetch para adicionar sua própria semântica de cache persistente. Isso realmente viola vários princípios(Consistência, Mínima surpresa e outros). A ideia deles(Next.js) é boa, mas vou adicionar a questão de segurança ao que o Kent escreveu. Estaremos voltando aos velhos 'SQL injections'? Hoje não é possível, mas e amanhã, quando a tecnologia sofrer mudanças? Como o próprio @kentcdodds escreveu, abre aspas - Fazer isso tem impactos negativos no futuro da plataforma web, e também significa que, ao tentar solucionar o motivo pelo qual algo não está funcionando, você terá que vasculhar os recursos disponíveis para encontrar a versão do fetch do Next.js VS a versão do fetch da plataforma web - fecha aspas.
Em relação aos pontos positivos e negativos da extensão Next.js fetch para permitir que cada solicitação no servidor defina sua própria semântica de cache persistente, há várias considerações que eu acho importantes; citarei algumas delas:
Pontos Positivos:
-
Controle "Granulado" do Cache: A capacidade de definir semânticas de cache específicas para cada solicitação no servidor oferece um controle preciso sobre como os dados são armazenados em cache. Isso pode ser valioso para otimizar o desempenho e a eficiência, garantindo uma experiência de usuário mais rápida.
-
Otimização de Desempenho: A capacidade de configurar o cache de acordo com as necessidades de cada solicitação pode levar a um melhor desempenho. Isso pode reduzir a carga do servidor, minimizar a largura de banda e diminuir os tempos de carregamento.
-
Personalização por Requisição: Essa permite adaptar o comportamento do cache com base nas peculiaridades de cada solicitação, o que pode ser fundamental em casos nos quais diferentes recursos ou páginas têm requisitos de cache distintos.
-
Flexibilidade no Desenvolvimento: A flexibilidade oferecida pode ser muito útil para os desenvolvedores, permitindo adaptações específicas em diferentes partes de um aplicativo para atender requisitos individuais de cache.
Pontos Negativos:
-
Complexidade Adicional: Introduzir essa capacidade de definir semânticas de cache específicas para cada solicitação pode aumentar a complexidade do código. Isso pode exigir um entendimento mais profundo do cache e do gerenciamento de solicitações para garantir sua implementação correta.
-
Possível Sobrecarga de Desenvolvimento: A personalização intensiva do cache por solicitação pode resultar em um aumento na carga de trabalho para o desenvolvimento, pois cada solicitação pode exigir considerações adicionais de cache.
-
Potencial para Erros e Problemas de Debugging: A capacidade de definir semânticas de cache individualmente pode introduzir possíveis erros e desafios de debugging, especialmente em cenários nos quais várias configurações de cache são aplicadas em um ambiente complexo.
-
Possível Sobrecarga do serviço/Servidor: Se não gerenciado adequadamente, configurar o cache individualmente para cada solicitação pode aumentar a carga do servidor, especialmente se forem usadas configurações de cache mais pesadas ou ineficientes.
🤔 Vejo nos pontos negativos aumento de cobrança e ou taxas extras por parte da vercel...
Em resumo, a extensão do Next.js à API nativa Web fetch API tem vantagens significativas em termos de controle e otimização, mas também pode introduzir complexidade e desafios adicionais no desenvolvimento e na manutenção do sistema, especialmente em cenários mais complexos. A aplicação cuidadosa e a compreensão aprofundada de como o cache é gerenciado são essenciais para maximizar os benefícios e minimizar os possíveis problemas.
Por fim, este é um território relativamente novo no universo do Next.js. Quero acreditar sinceramente que isso represente uma mudança positiva e traga benefícios. É importante destacar que Kent é um defensor do Remix. Em resposta, @leeerob também se manifestou e defendeu a feature em questão neste post: Why I'm Using Next.js.
P.S.: Se você não conhece, sugiro pesquisar sobre a problemática biblioteca de JavaScript chamada MooTools. Eu passei por essa infeliz! 🤬
👇Comente aí o que vocês acham, mas sem hater, combinado? That's all folks! Peeeeace!!!