PHP, Next e Nuxt. Minha Jornada no desenvolvimento Web
Sobre mim
Essa é minha primeira publicação aqui, e gostaria de compartilhar um pouco da minha experiência ao me embarcar no desenvolvimento Web. Comecei a programar em 2018, minhas primeiras linguagens foram C e PHP. A linguagem C foi a que me inspirou e incentivou a seguir na área de software. Eu gosto e me aventuro por outras áreas, como Mobile, embarcados, app Desktop, Machine Learnign e Inteligência Artificial. Cada área tem suas particulares e espero compartilhar minhas experiências com cada uma.
PHP
Eu comecei pelo básico, HTML, CSS e JS. Confesso que achei bem chato criar documentos e estilizar, e até hoje sou péssimo nisso, mas quando o JS entrou no caminho, as coisas ficaram interessantes. Eu aprendi tudo isso no Ensino Médio, que tinha diversos cursos de informática. No segundo ano, o PHP entrou em cena. Até então nunca tinha visto algo mais belo e mágico do que você criar um script, que torna aqueles documentos HTML mais interativos e dinâmicos do que o JS. Nessa época aprendi um pouco de banco de dados e vi como interligar tudo isso e achei um máximo.
O que mais acho incrível no PHP, é que ele foi feito para web, então todos os conceitos e ideias por trás do desenvolvimento web você consegue aprender com o PHP. Eu fico até arrepiado quando alguém aqui do TabNews escreve algo em PHP. Fiquei nisso até 2021, quando comecei a estudar um monstro...
Um monstro chamado Node
Eu tinha achado interessante como o PHP dava muito poder a um site, algo que o JS não era capaz. Então conheci o node, tão inocente e belo, que tornava o JS como o PHP, não ia mais preciar configurar um servidor como fazia com PHP, estava tudo junto e organizado, o que poderia dar errado? Mas, assim como Sauron enganou os elfos na Terra-Média, esse foi o golpe fatal que o Node me deu, a organização era uma mentira, precisava instalar um monte de pacote, e alguns deles tinham risco de ter códigos maliciosos, além de diversos problemas que o próprio criador do Node apontava. Estou sendo muito dramático ao digitar isso, mas eu tinha explorado as famosas Stacks como MERN, MEAN e por ai vai. Achei tudo aquilo muito complicado, até porque eu não tinha apanhado tanto assim com o PHP. Então eu dei um tempo e encontrei o Deno, a versão melhorada do Node, e de fato minha experiência mudou muito, mas ainda o elephantinho estava no meu coração e para mim ainda era a melhor forma de programar na Web.
Eu dei um tempo no desenvolvimento Web e foquei em outras coisas, mais ainda mexia em alguma coisa aqui e ali por causa da minha faculdade de engenharia de software. Então chegou 2023...
Next.js um substituto digno do PHP
Ano passado comecei a explorar novamente o univverso web quando o Youtube começou a me recomendar vídeos sobre uma nova tecnologia: o Next.js Comecei a assistir a diversos vídeos e praticar alguns tutoriais e finalmente fiz um projeto para a faculdade com ele. Eu pessoalmente não fiz (ainda) um projeto pessoal nele, mas fiquei impressionado com a organização, a documentação e o quão poderoso ele é. Tudo o que é fundamental para a Web está embutido nele, e é fácil integrar com outros módulos compátiveis. Ali eu comecei a mudar minha visão da Web e vi que era possível construir algo mais fácil e intuitivo que as stacks do JS e uma excelente alternativa ao PHP.
Nuxt.js: uma delicinha
Eu pensei que não poderia ter algo melhor e mais fácil que o Next para criar desde uma simples aplicação até algo mais robusto. Porém, me enganei de novo!!! Vi que tinha uma alternativa com um nome muito semelhante, e minha curiosidade me levou aprender o Nuxt.js. Uma das melhores documentações que já vi, uma organização impecável, muito fácil de aprender e usar para praticamente qualquer tipo de aplicação Web, e atualmente estou bem fiel a ele e aprendendo cada vez mais.
Conclusão: O que eu quis dizer com isso tudo?
Meu principal objetivo de ter escrito esse post foi para mostrar, principalmente você que é iniciante, a não ficar preso a determinada tecnologia, com certeza existem caminhos e soluções melhores. E não ache que software é apenas Desenvolvimento WEB, outras áreas precisam de profissionais também, ciência de dados, inteligência artificial, embarcados, mobile e até jogos! Espero que eu tenha agregado algum valor para vocês, até mais!
O dia que você conhecer o Laravel (melhor framework existente pra PHP no mundo), vai perceber que estava enganado novamente pelo Nuxt.js. Você pode ver um exemplo aqui no meu post
Pedro oque o Nuxt tem que o next.js não tem?
Concordo com alguns, laravel é encantador. Veja isso https://ribamar.net.br/laravel/gerador-de-cruds Com apenas um único comando vc cria um CRUD e até para API.
Eu venho do PHP e Laravel + jQuery. O frontend era quadrado, formulário básico e tal. A internet evoluiu e jQuery se tornou obsoleto.
O Laravel me encantou por ser fácil e intuitivo, documentação muito bem organizada e escrita, e em relação a estrutura e código com design patterns aplicado do jeito certo tal qual Facade, Singleton, Builders (...) me faz apaixonar pelo framework.
Mas precisava usar algum framework de JavaScript e aposentar o jQuery, e testei vue.js e Next.js e vou te dizer: mesmo com typescript é decepcionante! Todo ecossistema do JavaScript é uma completa gambiarra, pior, é um caos!
Muitas dependencias de pequenos mantenedores. Um package para listar arquivos de uma pasta, outro package para criar um arquivo...
Tinha o NPM, e ao invés de melhorar o NPM, criaram o PNPM, depois dezenas de gerenciadores de pacotes.
Javascript tem em si o espirito das distro linux. Todos os dias alguem faz fork do Ubuntu e melhora algo, e ao invés de fazer (ou aceitar) uma pull request, e a consequencia é muda o nome (Kubuntu por exemplo) e dizer ser um sistema operacional novo. O ponto é que cada um quer ter seu 'framework' ao invés de contribuir com (ou aceitar contribuição em) um projeto já existente.
A comunidade de JavaScript constroem packages e frameworks igual ao dono dessa casa. Sem estudo, sem planejamento, um andar de cada vez, e quando precisar ampliar, ao invés de reestruturar, o negócio é "se a casa não caiu, dá pra morar dentro".
Desconhecem orientação a objetos, DRY, e todos os padrões de projeto.
Eu sei que estou sendo dramático, mas não estou exagerando...
Acho que todos que codaram node usaram Prisma ao menos uma vez, e na documentação deles, na seção de boas práticas, olha como eles definem Singleton:
import { PrismaClient } from '@prisma/client'
const prismaClientSingleton = () => {
return new PrismaClient()
}
declare const globalThis: {
prismaGlobal: ReturnType<typeof prismaClientSingleton>;
} & typeof global;
const prisma = globalThis.prismaGlobal ?? prismaClientSingleton()
export default prisma
if (process.env.NODE_ENV !== 'production') globalThis.prismaGlobal = prisma
Agora vejam o como é um Singleton de verdade que implementei em um projeto que estou trabalhando:
import { PrismaClient } from "@prisma/client";
export class PrismaClientSingleton {
protected static instance: PrismaClient;
public static getInstance() {
if (!PrismaClientSingleton.instance) {
PrismaClientSingleton.instance = new PrismaClient();
}
return PrismaClientSingleton.instance;
}
}
Vocês podem conferir sobre Singleton aqui https://refactoring.guru/pt-br/design-patterns/singleton.
A galera do javascript diz que não é bem assim, que estou exagerando. Mas a conclusão que passei a ter é que essa galera nunca programou com organização, estão acostumados a fazer scripts e gambiarra, e desconhecem algo melhor estruturado. E como meu caminho foi de vir algo mais estruturado, para algo mais caótico deu ruim.
Eu programo typescript, Next.js, Vue.js e o que mais surgir pela demanda da empresa que trabalho, mas não é prazeroso codar nada feito em javascript. É tudo muito penoso.
Eu não odeio nenhuma linguagem de programação (exceto Java por trauma), pois cada uma delas é ótima em resolver problemas especificos, e sinceramente, javascript tem potencial para ser a melhor, mas infelizmente javascript sofre desse mal.
Já tem o Next, criaram o Nuxt e daqui a pouco vem "Noxt" e "magicamente" tudo fica ultrapassado, hoje a tecnologia é assim, um framework javascript surge a cada instante. Opa... Nem vou terminar o comentário, surgiu outro, vou ali estudar. kkkk Quanta loucura!!!