Skip to main content

Para quem cria projetos de desenvolvimento, a utilização de bibliotecas e frameworks são essenciais para agilidade e escalabilidade.

Hoje, vamos falar sabre o Vue.js, um framework progressivo JavaScript, seus diferenciais e como ele pode ser utilizado em seus projetos de desenvolvimento.

O que é Vue.js?

O Vue.js é uma estrutura progressiva para Javascript usada para construir interfaces da web e aplicativos SPA. Não apenas para interfaces da web, Vue.js também é usado para desktop e desenvolvimento de aplicativos móveis com estrutura Electron.

A extensão HTML e a base JS rapidamente tornaram o Vue uma ferramenta de front-end favorita, evidenciada pela adoção por gigantes como Adobe, Behance,Alibaba, Gitlab e Xiaomi.

Por que usar o Vue.js?

  • Reatividade;
  • Reutilização de components;
  • Legibilidade do código;
  • Ecossistema de ferramentas sólidas;
  • Fácil de aprender;
  • Documentação excelente;
  • Suporte da comunidade muito unidos e fortes;
  • Grande flexibilidade;
  • Two way data-binding (bem próxima ao do Angular).

O diferencial do Vue.js para outros frameworks como react e Angular

Temos muitos frameworks que podemos listar aqui, mas acredito que os frameworks que batem de frente com o mesmo intuito que o Vue, é o React e o Angular. Não tenho muito conhecimento em React e Angular, mas o pouco que vi desses frameworks, o Vue consegue trazer, de uma forma melhor, a organização dos componentes, como eles são estruturados, estilizados e reativos.

Não irei muito a fundo nesse tema, mas deixarei a referência da página do Vue, onde eles comparam os principais pontos diferenciais com outros frameworks.

Como está o crescimento do Vue e ofertas de empregos?

O Vue.js teve um crescimento muito grande nos últimos anos. Segue um gráfico de comparativos de start no github:

vuejs

Tendências de buscas no Google: Vue jobs, React jobs e Angular jobs.

Interesse pelo termo Vue jobs por região.

Ainda assim,vejo um grande potencial nesse framework para os próximos anos. Vejo muitas vagas de Vue.Js no LinkedIn, mas a maioria está no exterior. Temos alguns sites criados pela comunidade para você conferir sobre esse tema.

O básico do Vue.js

Antes de começarmos essa parte, gostaria que vocês fixassem uma breve frase:

Tudo em Vue.js é componente, não existem páginas e componentes, apenas componentes e componentes.

A instância do Vue.js

O Vue recebei números atributos, então não vamos entrar em detalhes com todos, mas apresentarei todos que são mais utilizados.

Name

Esse com toda certeza é o mais simples da nossa lista, aqui colocamos o nome do nosso componente, lembre-se que tudo em Vue é Componente.

Components

Quando o seu componente tem outros componentes filhos, você precisa declarar eles aqui antes de usar dentro da tag de seu template. Normalmente você o importa declarando uma variável e passando a variável para dentro deste objeto. Isso só não acontece caso o componente que esta querendo usar seja global, muito comum nos frameworks UI.

Data

Onde você inicia todas as variáveis reativas do seu componente.

Obs: Você retorna um objeto e somente as variáveis que estiverem dentro desse objeto serão reativas.

Methods

É aqui que ficam nossas funções utilizadas para tratar dados, conexões APIs etc.

Computed

São funções com lógicas que vão de simples a complexas, você consegue fazer o mesmo com o methods. O diferencial da computed é que você armazena esses valores no cache e só é recalculado novamente caso alguma variável utilizada nela sofrer alterações.

Você jamais pode passar parâmetros para a computed e não, não use a gambiarra de retornar uma função recebendo parâmetros, pois se você esta usando a computed assim é porque você não precisa de uma computed aqui e sim um método.

Watch

Conseguimos assistir uma variável e toda vez que essa variável sofrer alteração ela irá invocar a função atribuída a ela.

Props

Quando você precisa passar dados do pai para filho no vue nós utilizamos as props,lembrando que é um anti-pattern alterar o valor da variável passada pela prop no filho.

Lifecycle Hooks

Listarei aqui apenas os mais utilizados e deixarei o link com todo o lifecycle do Vue para mais hooks.

  • beforeCreate: neste hook você só tem os Eventos javascript disponível;
  • created: aqui você ja tem todas injeções de dependências e as reatividades presentes no vue;
  • beforeMount: aqui você ja tem o seu HTML renderizado;
  • mounted: quando os seus componentes estão montados, ele não garante que todos os componentes filhos estejam montados!

Veja a lista com mais hooks no site do Vue.

Sintaxe de template

Interpolações

  • Textos: o mais básico de todos é o texto, ele usa a syntax do “Mustache”:

Html: Usado para quando queremos interpretar como uma tag o conteúdo e não só como texto:

vue.JS

Atributos: Como não conseguimos usar o Mustaches para declarar os atributos html, usarmos o v-bind:

Lembrando que v-bind recebe uma variável que esta dentro do escopo do Vue.

Eventos: Quando queremos trabalhar com os eventos como click, change e etc, trabalhamos com o v-on:

Conseguimos usar também qualquer expressão Javascript dentro desses conteúdos, como, por exemplo:

vue.js

Shorthands

Temos o prefixo v- quando especificamos algo do vue em tags, como v-bind ou v-on, nós temos alguns atalhos para isso

  • v-bind:id=”1″ pode ser facilmente diminuído para :id=”1″
  • v-on.click=”clicked” pode ser facilmente diminuído para @click=”clicked”

Loop

Tratar com loop em seu template no vue é bem simples, usamos o v-for na tag/componente que você queira que se repita, segue o exemplo:

Sempre que possível devemos passar o atributo key, ele serve para que quando o Vue for renderizar o conteúdo para que ele ache de forma mais fácil e performática o DOM que precisa atualizar.

Condicional

Conseguimos trabalhar facilmente com conficionais em componentes dinâmicos, segue um exemplo simples de if, else if e else:

Trabalhando com formulários no Vue

Conseguimos usar a diretiva v-model para criar two-way binding nos elementos de formulário como input, textarea, select e etc. Ele automaticamente busca a melhor forma de atualizar o valor da variável dependendo de como for o elemente, ex:

Conforme você escreve no input ele também atualiza o valor da variável na tela, o mesmo acontece com os demais elementos de um formulário.

Comunicação de componentes Filho para o Pai

Para passar dados de pai para filho já vimos nas instâncias que o props nos permite fazer isso agora como fazermos o ao contrário?

No Vue nós temos um carinha chamado $emit, que você vai emitir um evento para o componente pai, passando ou não uma variável, e o componente pai para receber esse evento ele declara o nome do evento filho, passando realmente um evento para o que o filho declarou segue o exemplo:

Componente PAI:

js

E no filho:

Posso alterar o valor de uma prop do pai no filho noVue.js?

Primeiro que eu recomendo fortemente que você não faça isso, como deixei claro quando expliquei o que era ela, mas no mundo real nós sabemos que precisamos às vezes disso, então vou ensinar alguns truques para vocês. Primeiro na doc do Vue eles mostram como fazer a alteração do filho para o pai que seria assim:

Aqui você declara a prop title e um evento para atualizar ela:

E assim você emitiria caso desejasse atualizar o valor:

Assim você não quebraria nenhum patterns do Vue e conseguiria alcançar seu objetivo, no entanto o Vue viu isso como uma necessidade da comunidade e criou o que chamamos de .sync que ele lhe permite alterar a propriedade do filho pro pai e vice-versa.

Aqui você tem o mesmo mostrado acima, mas utilizando apenas o .sync:

Considerações finais

Espero que tenha gostado desse guia sobre o Vue.js, um framework com uma grande variedade de recursos. Separei para você alguns links que podem ser interessantes para você estudar mais esse framework.

E aproveite para conferir mais conteúdos no Blog da LinkApi, como este texto sobre o InterceptorNestJS.

Cursos recomendados e links

VueMastery – Melhores cursos em minha opinião (Totalmente em inglês)

MadeWithVue- Site top que mostra desde sistemas a pacotes criados com Vue (totalmente eminglês)

UdemyVue JS Cod3r – Melhor conteúdo BR

Jobs

Vue Jobs

MadeWithVue – Jobs

GitHub Vuejs-BR

Referências

Vue.jsDocs

Meuperfil no Github

Leave a Reply