nuxt logo

Traducción de Documentación (No Oficial)

Componentes

Nuxt Kit proporciona un conjunto de utilidades para ayudarte a trabajar con componentes. Puedes registrar componentes de manera global o local, y también agregar directorios para que sean escaneados en busca de componentes.

Los componentes son los bloques de construcción de tu aplicación Nuxt. Son instancias de Vue reutilizables que se pueden usar para crear una interfaz de usuario. En Nuxt, los componentes del directorio de componentes se importan automáticamente por defecto. Sin embargo, si necesitas importar componentes desde un directorio alternativo o deseas importarlos selectivamente según sea necesario, @nuxt/kit proporciona los métodos addComponentsDir y addComponent. Estas utilidades te permiten personalizar la configuración del componente para adaptarse mejor a tus necesidades.

Mira el video de Vue School sobre la inyección de componentes.

addComponentsDir

Registra un directorio para que sea escaneado en busca de componentes e importado solo cuando se use. Ten en cuenta que esto no registra componentes globalmente, hasta que especifiques la opción global: true.

Uso

export default defineNuxtModule({
  meta: {
    name: '@nuxt/ui',
    configKey: 'ui',
  },
  setup() {
    addComponentsDir({
      path: resolve('./runtime/components'),
      prefix: 'U',
      pathPrefix: false
    })
  }
})

Tipo

function addComponentsDir (dir: ComponentsDir, opts: { prepend?: boolean } = {}): void

Parámetros

dir Un objeto con las siguientes propiedades:

PropiedadTipoRequeridoDescripción
pathstringtrueRuta (absoluta o relativa) al directorio que contiene tus componentes. Puedes usar alias de Nuxt (~ o @) para referirte a directorios dentro del proyecto o usar directamente una ruta de paquete npm similar a require.
patternstring | string[]falseAcepta un patrón que se ejecutará contra la ruta especificada.
ignorestring[]falseIgnorar patrones que se ejecutarán contra la ruta especificada.
prefixstringfalsePrefijo para todos los componentes coincidentes con esta cadena.
pathPrefixbooleanfalsePrefijo del nombre del componente por su ruta.
enabledbooleanfalseIgnorar el escaneo de este directorio si se establece en true.
prefetchbooleanfalseEstas propiedades (prefetch/preload) se utilizan en producción para configurar cómo los componentes con prefijo Lazy son manejados por webpack a través de sus comentarios mágicos. Aprende más en la documentación de webpack
preloadbooleanfalseEstas propiedades (prefetch/preload) se utilizan en producción para configurar cómo los componentes con prefijo Lazy son manejados por webpack a través de sus comentarios mágicos. Aprende más en la documentación de webpack
isAsyncbooleanfalseEsta bandera indica que el componente debe cargarse de forma asíncrona (con un fragmento separado) independientemente de si se usa el prefijo Lazy o no.
extendComponent(component: Component) => Promise<Component | void> | (Component | void)falseUna función que se llamará para cada componente encontrado en el directorio. Acepta un objeto componente y debe devolver un objeto componente o una promesa que se resuelva en un objeto componente.
globalbooleanfalseSi está habilitado, registra componentes para que estén disponibles globalmente.
islandbooleanfalseSi está habilitado, registra componentes como islas. Puedes leer más sobre islas en la descripción del componente <NuxtIsland/>.
watchbooleanfalseObserva la ruta especificada para cambios, incluyendo adiciones y eliminaciones de archivos.
extensionsstring[]falseExtensiones soportadas por el constructor de Nuxt.
transpile'auto' | booleanfalseTranspila la ruta especificada usando build.transpile. Si se establece en 'auto', se establecerá transpile: true si node_modules/ está en la ruta.

opts

PropiedadTipoRequeridoDescripción
prependbooleanfalseSi se establece en true, el directorio se antepondrá al array con unshift() en lugar de push().

addComponent

Registra un componente para que sea importado automáticamente.

Uso

import { defineNuxtModule, createResolver, addComponent } from '@nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: '@nuxt/image',
    configKey: 'image',
  },
  async setup() {
    const resolver = createResolver(import.meta.url)

    addComponent({
      name: 'NuxtImg',
      filePath: resolver.resolve('./runtime/components/NuxtImg.vue'),
    })

    addComponent({
      name: 'NuxtPicture',
      filePath: resolver.resolve('./runtime/components/NuxtPicture.vue'),
    })
  },
})

Tipo

function addComponent (options: AddComponentOptions): void

Parámetros

options: Un objeto con las siguientes propiedades:

PropiedadTipoRequeridoDescripción
namestringtrueNombre del componente.
filePathstringtrueRuta al componente.
pascalNamestringfalseNombre del componente en Pascal case. Si no se proporciona, se generará a partir del nombre del componente.
kebabNamestringfalseNombre del componente en kebab case. Si no se proporciona, se generará a partir del nombre del componente.
exportstringfalseEspecifica exportación nombrada o por defecto. Si no se proporciona, se establecerá en 'default'.
shortPathstringfalseRuta corta al componente. Si no se proporciona, se generará a partir de la ruta del componente.
chunkNamestringfalseNombre del fragmento para el componente. Si no se proporciona, se generará a partir del nombre del componente.
prefetchbooleanfalseEstas propiedades (prefetch/preload) se utilizan en producción para configurar cómo los componentes con prefijo Lazy son manejados por webpack a través de sus comentarios mágicos. Aprende más en la documentación de webpack
preloadbooleanfalseEstas propiedades (prefetch/preload) se utilizan en producción para configurar cómo los componentes con prefijo Lazy son manejados por webpack a través de sus comentarios mágicos. Aprende más en la documentación de webpack
globalbooleanfalseSi está habilitado, registra el componente para que esté disponible globalmente.
islandbooleanfalseSi está habilitado, registra el componente como isla. Puedes leer más sobre islas en la descripción del componente <NuxtIsland/>.
mode'client' | 'server' | 'all'falseEsta opción indica si el componente debe renderizarse en el cliente, servidor o ambos. Por defecto, se renderizará en ambos, cliente y servidor.
prioritynumberfalsePrioridad del componente, si múltiples componentes tienen el mismo nombre, se usará el que tenga la prioridad más alta.

Ejemplos

Si deseas importar automáticamente un componente desde un paquete npm, y el componente es una exportación nombrada (en lugar de la por defecto), puedes usar la opción export para especificarlo.

import { addComponent, defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule({
  setup () {
    // import { MyComponent as MyAutoImportedComponent } from 'my-npm-package'
    addComponent({
      name: 'MyAutoImportedComponent',
      export: 'MyComponent',
      filePath: 'my-npm-package',
    })
  },
})