A popularidade do Vue.js tem crescido rapidamente. Ele ainda não atingiu o nível do Angular ou React, mas no ano que o repositório atual do VueJS foi adicionado ao GitHub, ele acumulou aproximadamente 2.700 seguidores (mais do que o Angular), 47.000 estrelas (mais que o dobro do Angular e mais que 3/4 do React). Eles também têm mais issues fechados do que o React e somente 58 issues abertos (comparados com os mais de 500 para o React e mais de 1.000 para o Angular).
Esse crescimento óbvio em popularidade traz a questão: “por que o Vue.js está ganhando tanto terreno, apesar de já existirem tantos ótimos frameworks?”, e também “O que o Vue.js oferece e os outros frameworks e bibliotecas não têm?”. Você pensaria que se puder responder à segunda questão, teria a resposta para a primeira, certo? Bem, a resposta rápida para a segunda questão é:
“nada”
O quê? Se ele não está oferecendo nada de novo, porque não foi ignorado? Bem, vamos tentar uma resposta longa para a segunda questão:
“Tecnicamente ele não tem nenhuma grande funcionalidade. No entanto, ele oferece uma combinação única de funcionalidades”
Não são as funcionalidades em si, mas a combinação de funcionalidades que o Vue.js utiliza que está atraindo a comunidade. Então, quais são as funcionalidades e de onde o Vue.js as roubou? Bem, essas informações estão em meu artigo de convidado do AppendTo com o título familiar de “De onde veio o Vue.JS?
No entanto, eu tenho algumas funcionalidades exclusivas aqui que não consegui colocar naquele artigo (eles me limitaram a mil palavras). Você deveria ler o artigo do AppendTo primeiro.
DOM Virtual
Essa funcionalidade é provavelmente uma das melhores que o React apresentou ao mundo (apesar de eu ser bem parcial em relação a como eles mudaram nossa maneira de pensar fazendo o React focar tanto em componentes compostos e aninhados ao invés de Views, o que eu falei no artigo do AppendTo). DOM Virtual revolucionou a maneira como renderizamos nossas Views/componentes para que não precisemos nos preocupar com a lógica de atualizar apenas as poucas peças que precisem ser atualizadas e também não incorrer em uma grande perda de performance devido a renderizar novamente a View inteira.
O algoritmo de renderização do Vue é geralmente mais rápido do que o do React, e por todos os estados e propriedades serem “reativos” no Vue, e eles tratarem a detecção das mudanças, é ainda mais simples de trabalhar com ele porque você nunca precisará implementar shouldcomponentupdate para otimizá-lo. Então, o Vue não somente “roubou” essa funcionalidade, eles também melhoraram de diversas maneiras (embora tecnicamente eles tenham utilizado a implementação do DOM virtual de alguém ao invés de criar uma própria)! No entanto, fico curioso se a reatividade foi pega de algum outro lugar. Sei que o Angular 1 faz algo similar com o escopo, mas é “com verificação suja” ao invés de aplicado.
Ferramenta CLI para carregar rapidamente novos projetos
O Vue-CLI permite que você facilmente pegue uma base de uma estrutura de projeto, responda algumas perguntas e esteja imediatamente configurado e pronto para iniciar, em segundos, um novo projeto Vue. Acredito que o Ember tenha sido o primeiro a lançar sua própria ferramenta de CLI como acompanhamento para seu framework (fique à vontade para me corrigir se eu estiver errado), e apesar da comunidade do Ember não ter alcançado o tamanho de outros frameworks grandes, essa é definitivamente uma ótima razão para considerar o Ember (e o Vue). É incrível ver que o Angular tenha caminhado para isso também (está atualmente como Release Candidate).
No entanto a ferramenta CLI do Vue não é tem tantas funcionalidades, por ser desenvolvida somente para iniciar e para construir o projeto, mas se deve primeiramente a não existir nada para o Vue ajustar, exceto componentes, e existem muitas maneiras perfeitamente aceitáveis de criar componentes, então você pode fazer o que quiser nesse caso.
É isso
Você conhece alguma outra funcionalidade que deveria estar na lista? O Vue.js parece tão simples para mim que é difícil apresentar seus recursos. Me avise nos comentários abaixo o que você mais gosta no Vue, ou o que você pensar em me contar (espero que seja ao menos relativo ao tópico).
***
Joe Zimmerman faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://www.joezimjs.com/javascript/where-did-vuejs-come-from/