Tutorial Vue.js: Estrutura, Componentes e Boas Práticas

Vue.js é um framework progressivo para a criação de interfaces de usuário, permitindo que desenvolvedores construam projetos de forma eficiente e organizada. Progressivo aqui significa que você pode começar a usar o Vue em pequenos módulos no seu projeto e, conforme a necessidade, expandir até um aplicativo completo e robusto. Nesta narrativa, vamos explorar desde a criação de um projeto básico até o modo de estruturar componentesTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. para melhorar a manutenibilidade do seu código.

O que é Vue.js?🔗

O Vue.js foi criado com a proposta de ser simples de aprender e igualmente poderoso para desenvolver aplicações dinâmicas. Ele permite lidar com a camada de View (visão) de forma reativa. Isso significa que os dados e a interface sempre estarão sincronizados, o que facilita bastante o desenvolvimento de front-end.

Algumas características de destaque:

Criando um Projeto com Vue CLI🔗

Para começar a utilizar o Vue.js em um projeto completo, podemos usar a Vue CLI (Command Line Interface). Ela simplifica a configuração inicial, instalando dependências necessárias e criando a estrutura de pastas recomendada.

1. Instale a Vue CLI (se ainda não a tiver instalada):

npm install -g @vue/cli

2. Crie um novo projeto:

vue create meu-projeto-vue

3. Escolha as configurações: A ferramenta apresentará opções para preset de configurações (JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., TypeScript, test runner etc.). Selecione as que melhor se encaixam em sua necessidade.

4. Execute o projeto:

cd meu-projeto-vue
npm run serve

5. Abra no navegador: Geralmente, a aplicação fica disponível em http://localhost:8080.

Ao finalizar, você terá uma estrutura de pastas parecida com:

meu-projeto-vue
 ├─ node_modules
 ├─ public
 ├─ src
 │   ├─ App.vue
 │   ├─ main.js
 │   └─ components
 └─ package.json

A Instância do Vue e Suas Propriedades🔗

No modo de uso mais básico (sem a CLI), para exibir dados reativos em uma página HTMLO que é HTML? Fundamentos, História e Evolução da LinguagemO que é HTML? Fundamentos, História e Evolução da LinguagemDescubra a origem e evolução do HTML, entendendo sua importância na estrutura da web e como influenciou o desenvolvimento digital moderno., cria-se uma instância assim:

<div id="app">
  <h1>{{ mensagem }}</h1>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
new Vue({
  el: '#app',
  data: {
    mensagem: 'Olá, Vue!'
  }
})
</script>

No caso de projetos criados com a CLI, a mesma estrutura lógica é aplicada dentro do arquivo main.js e dos componentesTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. single file.

Data Binding e V-model🔗

O Vue.js traz uma gama de diretivas que simplificam o desenvolvimento. Entre as mais importantes estão:

Exemplo de uso do v-model:

<template>
  <div>
    <input v-model="nome" placeholder="Digite seu nome" />
    <p>Olá, {{ nome }}</p>
  </div>
</template>
<script>
export default {
  data() {
    return {
      nome: ''
    }
  }
}
</script>

Quando o usuário digita algo no campo de textoCampos de Entrada: `<input type='text'>`, `password`, `email`Campos de Entrada: `<input type='text'>`, `password`, `email`Este tutorial ensina os conceitos essenciais de inputs text, password e email, demonstrando atributos e boas práticas para formulários em HTML., o valor de “nome” é atualizado automaticamente – e vice-versa.

Diretivas Essenciais (v-if, v-for e v-show)🔗

Além de v-model e v-bind, outras diretivas importantes incluem:

Exemplo de v-forEstruturas de Controle: if, switch e loopsEstruturas de Controle: if, switch e loopsAprenda as estruturas de controle em JavaScript, como if/else, switch e loops, com exemplos claros e didáticos para otimizar seu código e lógica de programação.:

<template>
  <div>
    <ul>
      <li v-for="item in lista" :key="item.id">{{ item.texto }}</li>
    </ul>
  </div>
</template>
<script>
export default {
  data() {
    return {
      lista: [
        { id: 1, texto: 'Item 1' },
        { id: 2, texto: 'Item 2' },
        { id: 3, texto: 'Item 3' }
      ]
    }
  }
}
</script>

Computed Properties e Watchers🔗

Em aplicações reais, é comum precisarmos manipular dados para exibiçãoSeletores e Propriedades CSS EssenciaisSeletores e Propriedades CSS EssenciaisAprenda a dominar o CSS com nosso tutorial completo: entenda seletores, propriedades essenciais e técnicas para criar layouts modernos e atrativos. ou gatilhos de ações quando eles mudam. O Vue.js fornece recursos para isso:

1. Computed Properties: Ideais quando desejamos, por exemplo, calcular algo com base em dados existentes. Elas são cacheadas, ou seja, só são recalculadas quando algum dado reativo utilizado nelas é alterado.

computed: {
  saudacao() {
    return `Olá, ${this.nome}!`
  }
}

2. Watchers: Usados para observar mudanças em propriedadesClasses e Herança em ES6+Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. reativas e rodar uma função sempre que elas se alterarem.

watch: {
  nome(novoValor, valorAntigo) {
    console.log('Nome mudou de', valorAntigo, 'para', novoValor)
  }
}

Criando e Organizando Componentes🔗

A abordagem de componentizaçãoSingle Page Applications (SPA) com React.jsSingle Page Applications (SPA) com React.jsDescubra como criar SPAs modernas com React.js. Este tutorial aborda criação de componentes, roteamento e gerenciamento de estado para interfaces dinâmicas. é um ponto forte do Vue.js. Em um projeto criado pela CLI, cada componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. costuma ser representado por um arquivo .vue contendo três seções principais:

<template>
  <div>
    <!-- Estrutura HTML do componente -->
    <p>{{ mensagem }}</p>
  </div>
</template>
<script>
export default {
  name: 'MeuComponente',
  data() {
    return {
      mensagem: 'Olá do Componente!'
    }
  }
}
</script>
<style scoped>
/* Estilos aplicados somente a este componente */
p {
  color: blue;
}
</style>

Comunicação entre Componentes

A comunicação entre componentesTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. normalmente se dá por:

Exemplo simples de uso de props:

<template>
  <div>
    <h2>{{ titulo }}</h2>
  </div>
</template>
<script>
export default {
  props: {
    titulo: {
      type: String,
      required: true
    }
  }
}
</script>

No componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. pai:

<template>
  <div>
    <Filho :titulo="tituloPai" />
  </div>
</template>
<script>
import Filho from './Filho.vue'
export default {
  components: { Filho },
  data() {
    return {
      tituloPai: 'Esse texto vem do Pai'
    }
  }
}
</script>

Ciclo de Vida de um Componente🔗

O Vue.js conta com hooks (ganchos) de ciclo de vida. Esses métodos são executados em momentos específicos, como antes de montar o componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. e após a montagem. A seguir um resumo em forma de tabela:

HookDescrição
beforeCreate()Chamado antes de inicializar o componente.
created()Chamado após a criação da instância, mas antes de montar.
beforeMount()Chamado antes de montar o DOM.
mounted()Chamado após o DOM ser montado e o template renderizado.
beforeUpdate()Disparado antes do componente ser atualizado.
updated()Disparado após a atualização do componente.
beforeDestroy()Chamado antes do componente ser destruído.
destroyed()Chamado depois de o componente ser destruído.

Esses hooks são bastante úteis para realizar configurações, buscar dados em APIs, limpar variáveisPré-processadores (SASS/SCSS): Variáveis, Mixins, NestingPré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. ou manipular eventos externos.

Boas Práticas e Organização🔗

Manter uma estrutura de pastas bem definida, como components, views, store, ajuda na legibilidade e manutenção do projeto, especialmente quando a aplicação se torna maior.

Conclusão🔗

O Vue.js facilita a criação de aplicações front-end escaláveis e de fácil manutenção. Com sua abordagem progressiva, você pode começar pequeno, testando diretivas como v-model, v-forEstruturas de Controle: if, switch e loopsEstruturas de Controle: if, switch e loopsAprenda as estruturas de controle em JavaScript, como if/else, switch e loops, com exemplos claros e didáticos para otimizar seu código e lógica de programação., v-bind, e avançar até aplicações completas com rotas, gerenciamento de estado global e muito mais. A reatividade simplifica o desenvolvimento, garantindo que uma mudançaEventos no JavaScript: onClick, onChange e maisEventos no JavaScript: onClick, onChange e maisDescubra como os eventos em JavaScript, como onClick e onChange, possibilitam interações dinâmicas e melhoram a experiência do usuário em páginas web. em seus dados se reflita imediatamente na interface.

Se você busca produtividade e organização no desenvolvimento front-end, o Vue.js é uma solução versátil e acessível. Com os conhecimentos introdutórios deste tutorial, já é possível iniciar projetos de pequeno a médio porte de forma eficiente – e, conforme a necessidade, avançar para recursos adicionais que o próprio ecossistema Vue oferece.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

  • A documentação do MDN para JavaScript é útil para entender os fundamentos da linguagem, que são essenciais para trabalhar com Vue.js: developer.mozilla.org/pt-BR/docs/Web/JavaScript
  • A documentação do Node.js é relevante para configurar o ambiente de desenvolvimento (como o uso do Vue CLI) e entender o ecossistema de ferramentas que suportam projetos Vue.js: nodejs.org/en/docs/
  • A especificação ECMAScript fornece a base teórica do JavaScript utilizado no Vue.js, ajudando a compreender o comportamento da linguagem: tc39.es/ecma262/

Compartilhar artigo