Pular para o conteúdo
Skillpedia
Sites e telas (frontend)280 mil · #132

vue-patterns

Faz seu agente trabalhar com padrões do Vue.js 3, incluindo a Composition API e gerenciamento de estado. É útil para criar ou revisar código em projetos Vue, Nuxt ou Pinia.

O que ela faz

Este guia ensina as melhores práticas para construir aplicações com Vue.js 3, Nuxt e Pinia. Ele cobre como organizar seu código, criar componentes reutilizáveis e gerenciar o estado da sua aplicação.

Quando usar

  • ✓Ao iniciar um novo projeto Vue.js ou Nuxt.
  • ✓Quando você precisar organizar melhor o código do seu projeto.
  • ✓Ao criar componentes reutilizáveis ou gerenciar dados globais.

Exemplo do que pedir para a IA

“Como devo organizar os arquivos em um projeto Vue.js?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/affaan-m/ECC/blob/main/pi/core/skills/vue-patterns/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/vue-patterns/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A IA usa as diretrizes fornecidas para sugerir estruturas de pastas, convenções de nomenclatura e a ordem correta dos elementos dentro dos arquivos `.vue`.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add affaan-m/ECC --skill vue-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/vue-patterns/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Padrões e Melhores Práticas do Vue.js

Guia abrangente para desenvolvimento Vue.js 3 usando Composition API (<script setup>), cobrindo design de componentes, reatividade, gerenciamento de estado, roteamento, testes e padrões SSR. Orientação específica para Nuxt é incluída onde difere do Vue puro.

Quando Ativar

Ative esta habilidade quando:

  • O projeto usa Vue.js (qualquer versão), Nuxt, Vite + Vue ou Pinia.
  • O usuário pergunta sobre arquitetura de componentes Vue, composables, reatividade ou gerenciamento de estado.
  • Revisando Componentes de Arquivo Único Vue (arquivos .vue).
  • Configurando Vue Router, stores Pinia ou configuração Vite/Vitest.
  • Discutindo padrões específicos de desempenho, segurança ou SSR do Vue.

1. Estrutura do Projeto

Layout Recomendado (Orientado a Funcionalidades)

src/
├── api/              # API client and endpoint definitions
├── assets/           # Static assets (images, fonts, icons)
├── components/       # Shared/reusable components
│   ├── base/         # Base UI primitives (Button, Input, Modal)
│   └── features/     # Feature-specific shared components
├── composables/      # Reusable Composition API logic
├── layouts/          # Page layouts (optional)
├── pages/            # Route-level page components
├── router/           # Vue Router configuration
├── stores/           # Pinia stores
├── types/            # TypeScript type definitions
├── utils/            # Pure utility functions
└── App.vue           # Root component

Nomenclatura de Arquivos

Convenção Quando Usar
PascalCase.vue Todos os componentes (imposto por vue/multi-word-component-names)
useCamelCase.ts Composables
camelCase.ts Utilitários, clientes de API, tipos
diretórios kebab-case Segmentos de rota, pastas de funcionalidades

2. Arquitetura de Componentes

Ordem do Componente de Arquivo Único

<script setup lang="ts">
// 1. Imports (vue → ecosystem → absolute → relative)
// 2. Props & Emits & Slots
// 3. Composables
// 4. Local state (ref/reactive)
// 5. Computed properties
// 6. Methods
// 7. Watchers
// 8. Lifecycle hooks
</script>

<template>
  <!-- Template content -->
</template>

<style scoped>
  /* Scoped styles */
</style>

Apresentacional vs. Container

  • Componentes Container: Possuem busca de dados, estado e efeitos colaterais. Renderizam componentes apresentacionais.
  • Componentes Apresentacionais: Recebem props, emitem eventos. Sem chamadas de API, sem acesso a store. Renderização pura.

Melhores Práticas de Props

// Type-based props with defaults
interface Props {
  label: string;
  variant?: "primary" | "secondary";
  disabled?: boolean;
  items: Item[];
}

const props = withDefaults(defineProps<Props>(), {
  variant: "primary",
  disabled: false,
});
  • Sempre forneça type, e required/default onde apropriado.
  • Props booleanas: isXxx, hasXxx, canXxx.
  • Nunca modifique props — emita eventos em vez disso.
  • Para vinculação v-model, use defineModel() (Vue 3.4+) ou modelValue + update:modelValue.

Eventos

const emit = defineEmits<{
  submit: [];
  "update:modelValue": [value: string];
  select: [id: string, index: number];
}>();
  • Use kebab-case em templates (@update:model-value).
  • Use camelCase em script (emit("update:modelValue", val)).

3. Composables (Lógica Reutilizável)

Estrutura

// composables/useDebounce.ts
export function useDebounce<T>(value: MaybeRef<T>, delay: number): Ref<T> {
  const debounced = ref(toValue(value)) as Ref<T>;

  let timer: ReturnType<typeof setTimeout>;
  watch(
    () => toValue(value),
    (newVal) => {
      clearTimeout(timer);
      timer = setTimeout(() => { debounced.value = newVal; }, delay);
    }
  );

  onUnmounted(() => clearTimeout(timer));
  return readonly(debounced);
}

Regras

  • Deve começar com o prefixo use.
  • Retorne valores reativos (ref, computed, reactive), nunca primitivos simples.
  • Aceite entradas reativas via MaybeRef / toRef() / toValue().
  • Limpe efeitos colaterais em onUnmounted ou watcher onCleanup.
  • Sem efeitos colaterais no escopo do módulo.

vs. Mixins

Composables substituem completamente os mixins do Vue 2:

  • Mixins: Fluxo de dados opaco, colisões de fonte de verdade, conflitos de nome.
  • Composables: Importações explícitas, valores de retorno claros, composable e "tree-shakable".

4. Gerenciamento de Estado

Quando Usar o Quê

Padrão Caso de Uso
ref() / reactive() Estado local do componente
Props + Emits Comunicação pai-filho
Provide / Inject Tema, configuração, API de plugin

…

Perguntas frequentes

O que é Composition API?

É uma forma mais flexível de organizar a lógica do seu código em Vue.js, usando funções como `ref`, `reactive` e `watch`.

Qual a diferença entre Presentational e Container components?

Componentes Container gerenciam dados e lógica, enquanto Presentational apenas exibem informações e recebem comandos.

Quando devo usar Pinia em vez de `ref` ou `reactive`?

Use Pinia para gerenciar dados que precisam ser compartilhados entre muitas partes da sua aplicação, enquanto `ref` e `reactive` são para dados locais de um componente.

Detalhes

Descrição original do autor

Vue.js 3 Composition API patterns, component architecture, reactivity best practices, Pinia state management, Vue Router navigation, and Nuxt SSR patterns. Activates for Vue, Nuxt, Vite, or Pinia projects. Use when building or reviewing Vue 3, Nuxt, or Pinia code — Composition API, reactivity, or router navigation.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#132
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas