framework-vue
Fornece padrões de desenvolvimento modular e de alta performance usando o ecossistema Vue 3, cobrindo Composition API, TypeScript, Pinia, Vue Router e otimizações de reatividade.
SKILL.mdskills/framework/framework-vue/SKILL.md
GitHubHabilidade de IA: Engenharia de Vue.js (Vue Specialist)
Esta skill orienta a inteligência artificial a agir como especialista no desenvolvimento de aplicações web modernas e reativas utilizando o ecossistema Vue 3. O objetivo principal é guiar a IA e desenvolvedores a desenhar componentes reutilizáveis, gerenciar estados eficientemente com Pinia e aplicar a Composition API de forma performática e tipada.
🧭 Diretrizes de Desenvolvimento Vue 3
Ao atuar nesta skill, paute o desenvolvimento de código sob as seguintes práticas:
1. Composition API & <script setup>
- Prática Padrão: Sempre utilize a Composition API com a sintaxe
<script setup>por ser mais limpa, performática e possuir suporte nativo superior para tipagem TypeScript. - Reatividade Clara: Utilize
refpara dados primitivos reativos isolados ereactiveexclusivamente para objetos complexos ou estados internos coesos de componentes. - Computed vs Watch:
- Use
computedpara derivar ou transformar estados de forma síncrona com caching nativo automático. - Use
watchouwatchEffectapenas para efeitos colaterais assíncronos ou imperativos externos (ex: chamadas de API, salvar no localStorage).
- Use
2. Gerenciamento de Estado Global com Pinia
- Pinia Stores: Substitua o Vuex antigo pelo Pinia. Defina stores focadas e modulares (ex:
useAuthStore,useCartStore) utilizando a sintaxe de Setup (comrefecomputed) para manter paridade com a Composition API. - Desestruturação Segura: Nunca desestruture propriedades reativas da store diretamente sem utilizar
storeToRefsdo Pinia, para evitar quebrar a reatividade nativa do Vue.
3. Otimização de Performance no Vue
- Ciclo de Vida de Componentes: Limpe ouvintes de eventos manuais (
window.addEventListener), timers (setInterval) ou conexões Websocket nos hooksonUnmountedouonBeforeUnmountpara evitar vazamentos de memória. - Virtualização de Listas: Em listas extensas (mais de 100 itens), prefira técnicas de virtualização de DOM (ex:
vue-virtual-scroller) em vez de renderizar todos os elementos comv-for. - v-if vs v-show: Use
v-ifquando a alternância for rara (evitando renderizar o nó no DOM) ev-showquando o elemento alternar de visibilidade frequentemente.
🛠️ Padrões de Código Recomendados (TypeScript Integrado)
<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
// Definição de Props tipadas estritamente
const props = defineProps<{
title: string;
initialCount?: number;
}>();
// Definição de Emits tipados
const emit = defineEmits<{
(e: 'update', count: number): void;
}>();
// Estados reativos
const count = ref(props.initialCount ?? 0);
// Estado derivado reativo (Computed)
const doubledCount = computed(() => count.value * 2);
function increment() {
count.value++;
emit('update', count.value);
}
</script>
<template>
<div class="counter-card">
<h3>{{ title }}</h3>
<p>Contador: {{ count }} (Dobro: {{ doubledCount }})</p>
<button @click="increment">Incrementar</button>
</div>
</template>
<style scoped>
.counter-card {
padding: 1rem;
border-radius: 8px;
background: var(--bg-surface);
}
</style>
🔗 Integração com Outras Skills
- frontend-developer: Utiliza as diretrizes Vue para orquestrar componentes e implementar o Design System visual do projeto.
- tech-typescript: Fornece os tipos estruturais que validam props e stores do Vue.