nuxt logo

Tradução da Documentação (Não Oficial)

shared

Use o diretório shared/ para compartilhar funcionalidades entre o aplicativo Vue e o servidor Nitro.

O diretório shared/ permite que você compartilhe código que pode ser usado tanto no aplicativo Vue quanto no servidor Nitro.

O diretório shared/ está disponível no Nuxt v3.14+.

O código no diretório shared/ não pode importar nenhum código Vue ou Nitro.

As importações automáticas não estão habilitadas por padrão no Nuxt v3 para evitar mudanças que possam quebrar projetos existentes.

Para usar essas utilidades e tipos importados automaticamente, você deve primeiro definir future.compatibilityVersion: 4 no seu nuxt.config.ts.

Uso

Método 1: Exportação nomeada

shared/utils/capitalize.ts
export const capitalize = (input: string) => {
  return input[0] ? input[0].toUpperCase() + input.slice(1) : ''
}

Método 2: Exportação padrão

shared/utils/capitalize.ts
export default function (input: string) {
  return input[0] ? input[0].toUpperCase() + input.slice(1) : ''
}

Agora você pode usar utilitários importados automaticamente no seu aplicativo Nuxt e no diretório server/.

app.vue
<script setup lang="ts">
const hello = capitalize('hello')
</script>

<template>
  <div>
    {{ hello }}
  </div>
</template>
server/api/hello.get.ts
export default defineEventHandler((event) => {
  return {
    hello: capitalize('hello')
  }
})

Como os Arquivos São Escaneados

Apenas arquivos nos diretórios shared/utils/ e shared/types/ serão importados automaticamente. Arquivos aninhados dentro de subdiretórios desses diretórios não serão importados automaticamente, a menos que você adicione esses diretórios a imports.dirs e nitro.imports.dirs.

A forma como as importações automáticas de shared/utils e shared/types funcionam e são escaneadas é idêntica aos diretórios composables/ e utils/.

Veja também guide > directory-structure > composables#how-files-are-scanned
Estrutura de Diretórios
-| shared/
---| capitalize.ts        # Não importado automaticamente
---| formatters
-----| lower.ts           # Não importado automaticamente
---| utils/
-----| lower.ts           # Importado automaticamente
-----| formatters
-------| upper.ts         # Não importado automaticamente
---| types/
-----| bar.d.ts           # Importado automaticamente

Qualquer outro arquivo que você criar na pasta shared/ deve ser importado manualmente usando o alias #shared (configurado automaticamente pelo Nuxt):

// Para arquivos diretamente no diretório shared
import capitalize from '#shared/capitalize'

// Para arquivos em diretórios aninhados
import lower from '#shared/formatters/lower'

// Para arquivos aninhados em uma pasta dentro de utils
import upper from '#shared/utils/formatters/upper'

Este alias garante importações consistentes em toda a sua aplicação, independentemente da localização do arquivo que está importando.

Veja também guide > concepts > auto-imports