Executando verificação de segurança...
1

[Discussão] O uso de VueJS e NuxtJS em grandes projetos

Motivação

Estou iniciando esse tópico com o intuito de entender e documentar os motivos, na opinião da comunidade, de VueJS e NuxtJS não serem tão utilizados em grandes projetos quando comparados a ferramentas como ReactJS e NextJS.
Essa pergunta me surgiu ao refatorar um projeto ReactJS para VueJS com a intenção de aprender mais sobre a ferramenta e perceber um ambiente de desenvolvimento muito mais intuitivo e consequentemente produtivo em relação ao anterior, o que me fez pensar no porquê dela não ser mais utilizada.

Algumas questões

Aqui estão alguns pontos que na minha opinião seriam interessantes. O intuito aqui é apenas fomentar o assunto, sinta-se a vontade para trazer novas questões que consierar relevantes pada o tópico!

  • Você teve uma experiência diferente da minha ao utilizar VueJS? Quais os pontos negativos na sua opinião?
  • Se você fosse começar um projeto hoje, porque escolheria ou não VueJS?
  • Nos últimos anos, vimos a ferramenta em questão subir bastante no ranking de popularidade de ferramentas Frontend até o atual terceiro lugar. Você acha que ela passará Angular e React?
  • Sabemos que a resposta para a maioria das perguntas no campo da tecnologia é 'depende', quais as questões que vc julga relevante ao decidir qual dessas (micro)frameworks seu projeto irá utilizar?

Obrigado pela atenção, peço desculpas se o post não for muito apropriado, enfim, qualquer opinião é bem-vinda!

Carregando publicação patrocinada...
2

Pessoal geralmente opita por React por tem muita mais coisa em volta. Qualquer dúvida, tu acha rápido uma solução (gambiarra, cof cof). Mas quem mexe com Vue/Nuxt geralmente diz que é bem mais tranquilo. Intuitivo. Eu não sei dizer. Front não é meu forte e minha experiência é mais com React/Next.

Só um comentário que foge ao assunto. Eu tô querendo é ver é Angular. Ele é o terror dos Front-end porque impõe arquitetura e isso é algo que geralmente quem tá iniciando tem muito medo.

1

Pois é, algo que me chamou atenção no Vue é que raramente precisamos fazer essas gambiarras. Sobre ser intuitivo talvez não tenha sido o melhor adjetivo, mas é muito mais fácil aprender sozinho pois a documentação é excepcional, deixa a curva de aprendizado bem tranquila e vc consegue ter uma boa noção de como funciona o todo da ferramenta.

Cara, sobre o Angular eu confesso que nunca vi muito sobre além de um vídeo do , oq tu me diz sobre essa parada de arquitetura?

1

Pegue react... Você mesmo cria as pastas do jeito que queres, importa pacotes do jeito que tu queres. O Next já impõe, minimamente, uma arquitetura. As rotas são pages e tem aquela pasta api. Tu no máximo pode colocar os arquivos dentro de uma pasta src em Next. Mas para basicamente aí. O Angular, pelo o pouco o que vi impõe uma arquitetura mais rígida (por isso que é mais utilizada em grandes corporações, cujo Back-end é Java/C#) o que é bom para programadores mais experientes. Uma das coisas que vi ele trabalha com injeção de dependência. Algo muito importante para software menos acoplados. O NestJS, único framework pra Back-end que presta no Node, é baseado no Angular e segue bem esses princípios. E pelo o que vi, utiliza annotations, bem pra quem trabalha com Spring ou .NET. Enfim. Angular parece mais intuitivo pra quem trabalha com Java e C#. Já o Vue parece mais intuitivo pra quem trabalha com Django, Rails ou Laravel.

1

Po, entendi, faz muito sentido.
Me parece interessante mesmo ter a arquitetura imposta, quando trabalhei com React fiquei algum tempo procurando um padrão ou convenção para a arquitetura do projeto e a única resposta que encontrava de fato era "depende".
É bom, no entanto, que a imposição de uma arquitetura seja feita durante o desenvolvimento, dessa forma fica mais fácil implementar o uso de features que não contávamos com a utilização ou mesmo existência quando começamos o projeto, ponto pro Angular.

1

Sim é bom arquitetura bem definida, principalmente quando trabalhamos em time. Quando se trabalha sozinho, aí tu escreve do jeito que tu quiser (React, cof cof) com Go Horse, arquivo de mil linhas e o escambal. Quem trabalha com Back-end sabe como é doloroso trabalhar com algo que não tem padrão algum. E pode piorar, os líderes do projeto querem inventar padrões no front quando o produto já tá "pronto". Aí lasca. Como você disse, o ideal é que esse tipo de coisa seja definido de início. Nesse aspecto, Angular é vantajoso, porque, mesmo se tu nunca viu angular, o jeito de criar não foge daquele mundo. Quando fui aprender React pra trabalhar como full stack, apanhei muito. Tu vai buscar informações na Internet e tu percebe que cada um escreve do jeito que quer kkkkk

1

Pois é, isso sempre me incomodou no front, as minhas primeiras linguagens dps de C foram Java e Python, as duas geralmente tem algum tipo de padrão, apesar de não ser obrigatório, Java principalmente. Enfim, obrigado mano, talvez eu tente Angular em um futuro próximo!

1

Bem resumidamente, o Laravel acabou sendo o responsável por uma série de mudanças que hoje vemos em grandes projetos e tecnologias e isso impactou inicialmente a comunidade PHP, passando pelo Javascript (que foi ele que introduziu o Vue em seu core quando o Vue ainda era um pequeno projeto) e sua popularidade se estendeu para a comunidade PHP criando uma stack de trabalho PHP + Laravel + Vue. Pelo menos, foi assim que eu realmente me apaixonei por programação e consegui evoluir na carreira.

Dá para perceber que sou muito apaixonado e grato por tudo o que aprendi nesta stack, mas percebo que a cultura de boas documentações, vídeos e tutorias motivada pela comunidade Laravel foi abraçada por várias outras stacks e o que antes era um diferencial do Laravel + Vue, agora temos excelentes conteúdos em outras tecnologias, que já eram muito consolidadas, mas faltava um cuidado com a forma como era ensinado o seu uso. Em outras palavras, agora as documentações são mais "inclusivas" mesmo fora do mundo PHP e Vue.

Ou seja, o que era um diferencial do Laravel e Vue, agora se torna algo comum em todas as grandes tecnologias. E quando se igualam tecnologias emergentes com as que já são maduras, é claro que as emergentes perdem preferência.

Um exemplo é o que aconteceu na empresa onde trabalho. Durante 10 anos a empresa seguiu a stack do PHP. Com o a chegada do Vue, as maiores soluções da empresa foram desenvolvidas em Vue. Mas no ano passado, a diretoria de tecnologia preferiu migrar tudo para React. E por que mudaram pra React? Confiança, credibilidade e pelas razões que foram citadas acima como comunidade mais ativa, fácil documentação, liberdade e estabilidade entre as versões.

Inclusive, o que matou o Angular (embora ele não esteja tão morto assim) foram justamente essas incompatibiliaddes entre versões e nesse quesito o React dá de 10x0 nos outros frameworks.

Portanto, eu ainda prefiro o VueJS para estudo, eu consigo aprender melhor conceitos de frontend (minha atuação principal é backend), então eu acho mais prático estudar em cima do Vue. Mas perceba que eu não atuo ativamente no front, então não faz muita diferença para mim qual o framework escolhido para tocar os projetos front que atuo.

No entanto, se eu quisesse seguir uma carreira no front e ter melhores oportunidades de emprego e talvez, melhor salário, principalmente aqui no Brasil onde a comunidade React é super aquecida (blame it on Rocketseat), para quem quer começar no mercado, eu acredito que vagas junior dão mais oportunidade para React. Se for para Vue, ou vai pegar pequenas startups, fábricas de software ou vai precisar já começar como nivel maior (pleno no mínimo), ou seja, para ser contratado para atuar na stack com Vue tem que tocar alguns projetos por conta, fazer freela para se desenvolver nele para, depois, poder atuar no mercado que não dá muito espaço para estágio ou júnior.

Reforço que esta é apenas a visão do que eu tenho ao meu redor. Essa pode ser uma realidade muito diferente para outras pessoas, mas quis compartilhar um pouco do que acontece comigo. Espero ter acrescentado algo na discussão.

1

A primeira coisa a ser levada em consideração é que o Vue foi criado pela comunidade. O react é patrocinado por uma empresa bilionária. Isso já é suficiente para mostrar o porque da diferença entre o número de conteúdo.
A lenda diz que a comunidade vue surgiu após a Google aposentar o AngularJS. A primeira versão do vue era muito parecida. Quase igual. O Google mudou tudo quando criou o Angular em typescript e deixou a comunidade que estava se formando em volta extremamente insatisfeita. Nesse contexto surgiu o vue. Muita gente migrou para o angular novo, muita gente migrou pro vue. Foi uma época de brigas acirradas. O angular evoluiu do seu jeito. O vue evoluiu do seu jeito e o react também. Hoje ambos são extremamente fortes em seus nichos.

Eu, particularmente, odeio react. Mas paradoxalmente adoro o next. Ja fiz projetos inteiros em next mas nao quero nem ouvir falar de react. Eu sei. É uma opinião estranha.

Ja com vue é o contrário. Eu acho o nuxt horrível. Todos os projetos que eu inicio, eu tento fazer em nuxt mas sempre desisto. Acabo fazendo só os sites mesmo. Sistema, nunca. Começo e abandono sempre.

Um simples adendo: eu continuo insistindo em nuxt pq eu vejo a evolução dele. Creio que breve eu me renderei. Ele tem uma série de melhorias em relação ao vue puro e vale a pena usar sempre que possível. Mas por enquanto, estou só nos sites mesmo.

1

Interessante, não sabia desse backstory, mas sim, o fato de não ter uma grande corporação por trás é bastante significativo, acho incrível até onde o Vue chegou quando penso nisso.

Na verdade eu acho sua opinião sobre amar Next e odiar React bastante válida kkkkk. O React por si só causa muita dor de cabeça, é muito difícil vc conseguir manter o projeto consistente durante todo o desenvolvimento, já utilizando o Next acaba sendo mais fácil de manter essa consistência e aproveitar melhor o poder do React.

Eu gostaria muito de falar mais sobre o Nuxt para a parte de sistemas, no entanto já estou há algumas horas tentando iniciar um projeto mas não consigo por conta de alguns erros de Hydration.

Mas assim, no geral acho muito melhor ter uma API separada onde você coloca seu sistema, regras de negócio e etc do que colocar tudo em uma só framework. Com isso o projeto fica muito mais limpo, na sua framework que entrega o front ela só faz isso mesmo, se comunicando com sua API por trás dos panos, onde também vai ter apenas suas regras de negócio e é isso. Se você conseguir definir certinho os contratos que cada parte deve entregar dá de ter uma experiência muito boa desenvolvendo.

1

Exatamente. Achei que minha opinião seria polêmica. Foi bom encontrar alguém que concorda logo de primeira.

Mas é isso. O nuxt, eu sei, um dia, eu vou conseguir saco para tocar o projeto inteiro nele. Mas é sempre assim: Você tenta iniciar, passa horas, dias... quebrando a cabeça pra iniciar. Às vezes você chega lá na frente e empaca em uma coisa que é simples no Vue puro. Aí vai procurar conteúdo e só acha coisa do nuxt2. O nuxt 3 mudou muito. Aí dificulta até achar conteúdo, inclusive pelo fato de ele ter saído do beta recentemente.

Com next você não tem esse problema por que nunca houve essa mudança com breakchange que você não consegue aproveitar nada.

Mas enfim. Tenho fé que vai dar certo. Todo projeto novo eu tento. Já já terei outra oportunidade. Vamos em frente. Nuxt redondinho com vue 3 e typescript é um sonho.

Só finalizando: A parte de API interna no Nuxt é muito boa. Mas eu só uso em coisa simples. Minhas APIs são sempre externas mesmo.

Aproveitei o final de 2022 pra migrar tudo de Adonis + Vue2 + Vuetify para Nest + Tailwind + Vite + Vue3 com composition API. Não me arrependo. A produtividade está bem mais alta. Typescript é outro nível.

1

Espero pelo dia que o Nuxt vai chegar nesse nivel também, vai ser muito bom. Vou continuar a bater a cabeça nele também e é isso. Nossa stack ta quase igual, só troco o Nest pelo flask

1

Comecei a estudar React no começo do ano passado. Não gostei, virei inimigo do JSX, passei raiva e tentei ir pro Vue. Curti muito mais que React e, desde então, é o que uso como framework front-end. Fácil de aprender, documentação muito boa, código em SFCs mais legível e fácil de mexer comparado a JSX (opinião pessoal), além de contar com um ótimo framework que é o Nuxt.

Tenho dúvidas se Vue vai tomar o posto do React em popularidade, e se tomar, não vai ser tão cedo.
Mesmo tendo problemas, React ainda é amplamente utilizado e não é qualquer empresa que se dispõe a mudar toda a base de código pra um framework diferente (até porque é trabalhoso, por serem frameworks bem diferentes). Com isso, as vagas de React continuam em abundância, os devs também continuam estudando essa tech, e ela continua popular. Sem contar que, no Brasil, Vue possui menos conteúdo que React, o que desencoraja alguns a estudá-lo.

Queria muito que o estudo/uso de Vue fosse mais comum e encorajado, pois acho melhor de se trabalhar do que React (que nem sequer usei mais), mas não acho que o cenário vá mudar tão cedo, infelizmente :[