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:
Propiedad | Tipo | Requerido | Descripción |
---|---|---|---|
path | string | true | Ruta (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. |
pattern | string | string[] | false | Acepta un patrón que se ejecutará contra la ruta especificada. |
ignore | string[] | false | Ignorar patrones que se ejecutarán contra la ruta especificada. |
prefix | string | false | Prefijo para todos los componentes coincidentes con esta cadena. |
pathPrefix | boolean | false | Prefijo del nombre del componente por su ruta. |
enabled | boolean | false | Ignorar el escaneo de este directorio si se establece en true . |
prefetch | boolean | false | Estas 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 |
preload | boolean | false | Estas 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 |
isAsync | boolean | false | Esta 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) | false | Una 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. |
global | boolean | false | Si está habilitado, registra componentes para que estén disponibles globalmente. |
island | boolean | false | Si está habilitado, registra componentes como islas. Puedes leer más sobre islas en la descripción del componente <NuxtIsland/> . |
watch | boolean | false | Observa la ruta especificada para cambios, incluyendo adiciones y eliminaciones de archivos. |
extensions | string[] | false | Extensiones soportadas por el constructor de Nuxt. |
transpile | 'auto' | boolean | false | Transpila la ruta especificada usando build.transpile. Si se establece en 'auto' , se establecerá transpile: true si node_modules/ está en la ruta. |
opts
Propiedad | Tipo | Requerido | Descripción |
---|---|---|---|
prepend | boolean | false | Si 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:
Propiedad | Tipo | Requerido | Descripción |
---|---|---|---|
name | string | true | Nombre del componente. |
filePath | string | true | Ruta al componente. |
pascalName | string | false | Nombre del componente en Pascal case. Si no se proporciona, se generará a partir del nombre del componente. |
kebabName | string | false | Nombre del componente en kebab case. Si no se proporciona, se generará a partir del nombre del componente. |
export | string | false | Especifica exportación nombrada o por defecto. Si no se proporciona, se establecerá en 'default' . |
shortPath | string | false | Ruta corta al componente. Si no se proporciona, se generará a partir de la ruta del componente. |
chunkName | string | false | Nombre del fragmento para el componente. Si no se proporciona, se generará a partir del nombre del componente. |
prefetch | boolean | false | Estas 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 |
preload | boolean | false | Estas 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 |
global | boolean | false | Si está habilitado, registra el componente para que esté disponible globalmente. |
island | boolean | false | Si está habilitado, registra el componente como isla. Puedes leer más sobre islas en la descripción del componente <NuxtIsland/> . |
mode | 'client' | 'server' | 'all' | false | Esta opción indica si el componente debe renderizarse en el cliente, servidor o ambos. Por defecto, se renderizará en ambos, cliente y servidor. |
priority | number | false | Prioridad 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',
})
},
})
※Esta página es una traducción no oficial de la documentación oficial de Nuxt.js.
La página correspondiente en la documentación oficial está aquí:
https://nuxt.com/docs/3.x/api/kit/components