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

nuxt4-patterns

Auxilia seu agente a criar aplicações Nuxt 4 com segurança e performance. Entende padrões para carregamento de dados e renderização no servidor.

O que ela faz

Esta ferramenta ajuda a construir sites mais rápidos e confiáveis usando Nuxt 4. Ela garante que a página carregada no servidor seja idêntica à que aparece no navegador, otimiza o carregamento de dados e define como cada página deve ser exibida.

Quando usar

  • ✓Ao construir um novo site com Nuxt 4.
  • ✓Ao tentar corrigir erros onde a página no servidor e no navegador não batem.
  • ✓Ao otimizar a velocidade de carregamento de páginas e dados.

Exemplo do que pedir para a IA

“Como posso garantir que os dados da minha página carreguem corretamente no servidor e no navegador sem erros?”

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/nuxt4-patterns/SKILL.md

Mensagem pronta para colar

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

Ela analisa seu código Nuxt 4 e sugere as melhores práticas para carregar dados, renderizar páginas e evitar problemas de sincronia entre o servidor e o navegador.

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 nuxt4-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/nuxt4-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 do Nuxt 4

Use ao construir ou depurar aplicativos Nuxt 4 com SSR, renderização híbrida, regras de rota ou busca de dados em nível de página.

Quando Ativar

  • Inconsistências de hidratação entre o HTML do servidor e o estado do cliente
  • Decisões de renderização em nível de rota, como pré-renderização, SWR, ISR ou seções apenas do cliente
  • Trabalho de performance em torno de carregamento preguiçoso (lazy loading), hidratação preguiçosa (lazy hydration) ou tamanho do payload
  • Busca de dados de página ou componente com useFetch, useAsyncData ou $fetch
  • Problemas de roteamento do Nuxt ligados a parâmetros de rota, middleware ou diferenças SSR/cliente

Segurança de Hidratação

  • Mantenha a primeira renderização determinística. Não coloque Date.now(), Math.random(), APIs exclusivas do navegador ou leituras de armazenamento diretamente no estado do template renderizado pelo SSR.
  • Mova a lógica exclusiva do navegador para trás de onMounted(), import.meta.client, ClientOnly ou um componente .client.vue quando o servidor não puder produzir o mesmo markup.
  • Use o composable useRoute() do Nuxt, não o de vue-router.
  • Não use route.fullPath para controlar o markup renderizado pelo SSR. Fragmentos de URL são exclusivos do cliente, o que pode criar inconsistências de hidratação.
  • Trate ssr: false como uma saída de emergência para áreas verdadeiramente exclusivas do navegador, não uma correção padrão para inconsistências.

Busca de Dados

  • Prefira await useFetch() para leituras de API seguras para SSR em páginas e componentes. Ele encaminha dados buscados pelo servidor para o payload do Nuxt e evita uma segunda busca na hidratação.
  • Use useAsyncData() quando o fetcher não for uma simples chamada $fetch(), quando precisar de uma chave personalizada ou quando estiver compondo várias fontes assíncronas.
  • Dê a useAsyncData() uma chave estável para reutilização de cache e comportamento de atualização previsível.
  • Mantenha os manipuladores de useAsyncData() livres de efeitos colaterais. Eles podem ser executados durante o SSR e a hidratação.
  • Use $fetch() para escritas acionadas pelo usuário ou ações exclusivas do cliente, não para dados de página de nível superior que devem ser hidratados a partir do SSR.
  • Use lazy: true, useLazyFetch() ou useLazyAsyncData() para dados não críticos que não devem bloquear a navegação. Lide com status === 'pending' na UI.
  • Use server: false apenas para dados que não são necessários para SEO ou para a primeira pintura (first paint).
  • Reduza o tamanho do payload com pick e prefira payloads mais rasos quando a reatividade profunda for desnecessária.
const route = useRoute()

const { data: article, status, error, refresh } = await useAsyncData(
  () => `article:${route.params.slug}`,
  () => $fetch(`/api/articles/${route.params.slug}`),
)

const { data: comments } = await useFetch(`/api/articles/${route.params.slug}/comments`, {
  lazy: true,
  server: false,
})

Regras de Rota

Prefira routeRules em nuxt.config.ts para estratégia de renderização e cache:

export default defineNuxtConfig({
  routeRules: {
    '/': { prerender: true },
    '/products/**': { swr: 3600 },
    '/blog/**': { isr: true },
    '/admin/**': { ssr: false },
    '/api/**': { cache: { maxAge: 60 * 60 } },
  },
})
  • prerender: HTML estático no momento da compilação (build time)
  • swr: serve conteúdo em cache e revalida em segundo plano
  • isr: regeneração estática incremental em plataformas suportadas
  • ssr: false: rota renderizada pelo cliente
  • cache ou redirect: comportamento de resposta em nível do Nitro

Escolha regras de rota por grupo de rotas, não globalmente. Páginas de marketing, catálogos, dashboards e APIs geralmente precisam de estratégias diferentes.

Carregamento Preguiçoso e Performance

  • O Nuxt já faz code-splitting de páginas por rota. Mantenha os limites de rota significativos antes de micro-otimizar divisões de componentes.
  • Use o prefixo Lazy para importar dinamicamente componentes não críticos.
  • Renderize condicionalmente componentes preguiçosos com v-if para que o chunk não seja carregado até que a UI realmente precise dele.
  • Use hidratação preguiçosa para UI interativa abaixo da dobra (below-the-fold) ou não crítica.
<template>
  <LazyRecommendations v-if="showRecommendations" />
  <LazyProductGallery hydrate-on-visible />
</template>
  • Para estratégias personalizadas, use defineLazyHydrationComponent() com uma estratégia de visibilidade ou ociosidade (idle).
  • A hidratação preguiçosa do Nuxt funciona em componentes de arquivo único (single-file components). Passar novas props para um componente hidratado preguiçosamente acionará a hidratação imediatamente.
  • Use NuxtLink para navegação interna para que o Nuxt possa pré-buscar componentes de rota e payloads gerados.

Lista de Verificação de Revisão

  • A primeira renderização SSR e a renderização do cliente hidratada produzem o mesmo markup
  • Os dados da página usam useFetch ou useAsyncData, não $fetch de nível superior
  • Dados não críticos são preguiçosos e têm UI de carregamento explícita
  • As regras de rota correspondem aos requisitos de SEO e frescor da página
  • Ilhas interativas pesadas são carregadas preguiçosamente ou hidratadas preguiçosamente
Perguntas frequentes

O que é 'hydration mismatch'?

É um erro que acontece quando o conteúdo gerado no servidor é diferente do conteúdo que o navegador tenta mostrar, causando falhas visuais ou de funcionalidade.

O que são 'route rules'?

São regras que você define para dizer ao Nuxt como cada parte do seu site deve se comportar, como ser pré-renderizado, atualizado em segundo plano ou renderizado apenas no navegador.

Por que usar `useFetch` ou `useAsyncData` em vez de `$fetch`?

Essas funções são otimizadas para Nuxt e garantem que os dados carregados no servidor sejam passados para o navegador de forma eficiente, evitando carregamentos duplicados e melhorando a performance.

Detalhes

Descrição original do autor

Nuxt 4 app patterns for hydration safety, performance, route rules, lazy loading, and SSR-safe data fetching with useFetch and useAsyncData. Use when building or reviewing a Nuxt 4 app, or debugging hydration mismatches and SSR-safe data fetching.

repo: affaan-m/ECC

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas