O Vue.js conquistou seu lugar entre os frameworks JavaScript mais populares por sua curva de aprendizado suave e excelente performance. Se você está começando no desenvolvimento front-end ou quer expandir seu conhecimento para além do React ou Angular, este guia é perfeito para você.
O que é Vue.js?
Vue.js é um framework JavaScript progressivo para construir interfaces de usuário. Diferentemente de outros frameworks monolíticos, Vue foi projetado desde o início para ser adotado incrementalmente. A biblioteca principal é focada exclusivamente na camada de visualização, sendo fácil de integrar com outras bibliotecas ou projetos existentes.
Por que aprender Vue.js?
- Facilidade de aprendizado: Se você já conhece HTML, CSS e JavaScript básico, começar com Vue é extremamente simples.
- Versatilidade: Pode ser usado tanto em pequenos componentes quanto em aplicações completas.
- Performance: Vue.js é conhecido por seu excelente desempenho e tamanho reduzido (cerca de 20KB min+gzip).
- Ecossistema rico: Conta com ferramentas oficiais como Vue Router, Vuex e Vue CLI.
- Comunidade ativa: Documentação completa e comunidade acolhedora para ajudar iniciantes.
Configurando seu primeiro projeto Vue
Método 1: Incluindo via CDN (a maneira mais simples)
Para projetos pequenos ou para experimentar, basta incluir o Vue.js diretamente em seu HTML:
<!DOCTYPE html>
<html>
<head>
<title>Meu Primeiro App Vue</title>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
<div id="app">
<h1>{{ mensagem }}</h1>
</div>
<script>
const { createApp } = Vue
createApp({
data() {
return {
mensagem: 'Olá Vue!'
}
}
}).mount('#app')
</script>
</body>
</html>
Método 2: Usando Vue CLI (para projetos completos)
Para aplicações maiores, o Vue CLI oferece uma experiência de desenvolvimento mais robusta:
# Instalar o Vue CLI
npm install -g @vue/cli
# Criar um novo projeto
vue create meu-projeto-vue
# Navegar para o diretório do projeto
cd meu-projeto-vue
# Iniciar o servidor de desenvolvimento
npm run serve
Conceitos fundamentais do Vue.js
1. Instância Vue e Sistema de Reatividade
O coração do Vue.js é seu sistema de reatividade. Quando você cria uma instância Vue (ou um componente no Vue 3), ele adiciona todas as propriedades encontradas em seu objeto data ao sistema de reatividade do Vue.
const app = createApp({
data() {
return {
contador: 0,
nome: 'Visitante'
}
}
})
2. Diretivas
Diretivas são atributos especiais com o prefixo v- que aplicam comportamentos reativos ao DOM:
- v-bind: Vincula um atributo HTML a uma expressão Vue.
- v-if: Renderiza condicionalmente um elemento.
- v-for: Renderiza uma lista de elementos.
- v-on: Anexa um evento a um elemento.
- v-model: Cria uma vinculação bidirecional em campos de formulário.
<div id="app">
<p v-if="visivel">Agora você me vê</p>
<button v-on:click="toggleVisibilidade">Alternar</button>
<ul>
<li v-for="item in itens" :key="item.id">
{{ item.texto }}
</li>
</ul>
<input v-model="mensagem">
<p>Você digitou: {{ mensagem }}</p>
</div>
3. Métodos e Eventos
Definindo métodos e respondendo a eventos:
createApp({
data() {
return {
contador: 0
}
},
methods: {
incrementar() {
this.contador++
},
decrementar() {
if (this.contador > 0) {
this.contador--
}
}
}
}).mount('#app')
No HTML:
<div id="app">
<p>Contador: {{ contador }}</p>
<button v-on:click="incrementar">+</button>
<button v-on:click="decrementar">-</button>
</div>
4. Computed Properties
Propriedades computadas são propriedades que dependem de outras propriedades e são recalculadas automaticamente:
createApp({
data() {
return {
primeiroNome: 'João',
sobrenome: 'Silva'
}
},
computed: {
nomeCompleto() {
return this.primeiroNome + ' ' + this.sobrenome
}
}
}).mount('#app')
5. Componentes
Os componentes são uma das características mais poderosas do Vue, permitindo criar elementos reutilizáveis:
// Definindo um componente
app.component('saudacao', {
props: ['nome'],
template: `
<div class="saudacao">
<h3>Olá, {{ nome }}!</h3>
</div>
`
})
Usando o componente:
<div id="app">
<saudacao nome="Maria"></saudacao>
<saudacao nome="Pedro"></saudacao>
</div>
Construindo sua primeira aplicação Vue
Vamos construir uma simples lista de tarefas (Todo List) para demonstrar os conceitos básicos:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue Todo App</title>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<style>
.completed {
text-decoration: line-through;
color: #999;
}
</style>
</head>
<body>
<div id="app">
<h1>Minha Lista de Tarefas</h1>
<form @submit.prevent="adicionarTarefa">
<input v-model="novaTarefa" placeholder="Adicionar nova tarefa">
<button type="submit">Adicionar</button>
</form>
<ul>
<li v-for="(tarefa, index) in tarefas" :key="index"
:class="{ completed: tarefa.concluida }">
<input type="checkbox" v-model="tarefa.concluida">
{{ tarefa.texto }}
<button @click="removerTarefa(index)">X</button>
</li>
</ul>
<p>{{ tarefasRestantes }} tarefas restantes</p>
</div>
<script>
const { createApp } = Vue
createApp({
data() {
return {
novaTarefa: '',
tarefas: [
{ texto: 'Aprender Vue.js', concluida: false },
{ texto: 'Criar uma aplicação', concluida: false }
]
}
},
computed: {
tarefasRestantes() {
return this.tarefas.filter(t => !t.concluida).length
}
},
methods: {
adicionarTarefa() {
if (this.novaTarefa.trim()) {
this.tarefas.push({ texto: this.novaTarefa, concluida: false })
this.novaTarefa = ''
}
},
removerTarefa(index) {
this.tarefas.splice(index, 1)
}
}
}).mount('#app')
</script>
</body>
</html>
Próximos passos em sua jornada Vue.js
Após dominar os conceitos básicos, você pode avançar para:
- Vue Router: Gerenciamento de rotas para aplicações de página única (SPA).
- Vuex: Gerenciamento de estado para aplicações mais complexas.
- Composition API: Uma nova forma de organizar a lógica dos componentes (introduzida no Vue 3).
- Vue DevTools: Extensão para navegadores que facilita a depuração de aplicações Vue.
- Nuxt.js: Framework para criar aplicações Vue com renderização do lado do servidor (SSR).
Conclusão
Vue.js oferece um caminho acessível para desenvolver interfaces modernas e reativas. Sua abordagem progressiva permite que você comece com pequenas integrações e eventualmente construa aplicações completas à medida que sua confiança cresce.
Seja você um iniciante no desenvolvimento front-end ou um desenvolvedor experiente buscando uma alternativa mais leve e intuitiva, Vue.js oferece um equilíbrio excelente entre simplicidade e poder.
Comece com os conceitos básicos apresentados neste guia e, à medida que se sentir mais confortável, explore os recursos avançados do ecossistema Vue. Feliz codificação!
Recursos Adicionais
- Documentação oficial: https://vuejs.org/guide/introduction.html
- Vue Mastery: Cursos online de alta qualidade
- Vue School: Tutoriais e cursos práticos
- Awesome Vue: Coleção de recursos e bibliotecas para Vue.js
Deixe um comentário