nuxt logo

문서 번역(비공식)

컴포넌트

Nuxt Kit은 컴포넌트 작업을 돕기 위한 유틸리티 세트를 제공합니다. 컴포넌트를 전역 또는 로컬로 등록할 수 있으며, 컴포넌트를 스캔할 디렉토리를 추가할 수도 있습니다.

컴포넌트는 Nuxt 애플리케이션의 구성 요소입니다. 이들은 사용자 인터페이스를 생성하는 데 사용할 수 있는 재사용 가능한 Vue 인스턴스입니다. Nuxt에서는 기본적으로 components 디렉토리의 컴포넌트가 자동으로 임포트됩니다. 그러나 대체 디렉토리에서 컴포넌트를 임포트하거나 필요에 따라 선택적으로 임포트하려는 경우, @nuxt/kitaddComponentsDiraddComponent 메서드를 제공합니다. 이러한 유틸리티를 사용하면 컴포넌트 구성을 사용자 요구에 맞게 커스터마이즈할 수 있습니다.

컴포넌트 주입에 대한 Vue School 비디오를 시청하세요.

addComponentsDir

컴포넌트를 스캔하고 사용될 때만 임포트하도록 디렉토리를 등록합니다. global: true 옵션을 지정하지 않는 한, 이는 컴포넌트를 전역으로 등록하지 않습니다.

사용법

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

타입

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

매개변수

dir 다음 속성을 가진 객체:

속성타입필수설명
pathstringtrue컴포넌트를 포함하는 디렉토리의 경로(절대 또는 상대). 프로젝트 내부의 디렉토리를 참조하기 위해 Nuxt 별칭(~ 또는 @)을 사용할 수 있으며, require와 유사하게 npm 패키지 경로를 직접 사용할 수 있습니다.
patternstring | string[]false지정된 경로에 대해 실행될 패턴을 수락합니다.
ignorestring[]false지정된 경로에 대해 실행될 무시 패턴입니다.
prefixstringfalse이 문자열로 모든 일치하는 컴포넌트에 접두사를 붙입니다.
pathPrefixbooleanfalse경로에 따라 컴포넌트 이름에 접두사를 붙입니다.
enabledbooleanfalsetrue로 설정된 경우 이 디렉토리의 스캔을 무시합니다.
prefetchbooleanfalse이러한 속성(prefetch/preload)은 Lazy 접두사가 있는 컴포넌트가 webpack의 매직 코멘트를 통해 처리되는 방식을 구성하기 위해 프로덕션에서 사용됩니다. webpack 문서에서 자세히 알아보세요.
preloadbooleanfalse이러한 속성(prefetch/preload)은 Lazy 접두사가 있는 컴포넌트가 webpack의 매직 코멘트를 통해 처리되는 방식을 구성하기 위해 프로덕션에서 사용됩니다. webpack 문서에서 자세히 알아보세요.
isAsyncbooleanfalse이 플래그는 Lazy 접두사를 사용하든 사용하지 않든 상관없이 컴포넌트가 비동기(별도의 청크로)로 로드되어야 함을 나타냅니다.
extendComponent(component: Component) => Promise<Component | void> | (Component | void)false디렉토리에서 발견된 각 컴포넌트에 대해 호출될 함수입니다. 컴포넌트 객체를 받아들이며 컴포넌트 객체 또는 컴포넌트 객체로 해결되는 프라미스를 반환해야 합니다.
globalbooleanfalse활성화된 경우, 컴포넌트를 전역적으로 사용할 수 있도록 등록합니다.
islandbooleanfalse활성화된 경우, 컴포넌트를 아일랜드로 등록합니다. <NuxtIsland/> 컴포넌트 설명에서 아일랜드에 대해 더 읽어보세요.
watchbooleanfalse파일 추가 및 파일 삭제를 포함하여 지정된 경로의 변경 사항을 감시합니다.
extensionsstring[]falseNuxt 빌더에서 지원하는 확장자입니다.
transpile'auto' | booleanfalsebuild.transpile을 사용하여 지정된 경로를 트랜스파일합니다. 'auto'로 설정된 경우, 경로에 node_modules/가 포함되어 있으면 transpile: true로 설정됩니다.

opts

속성타입필수설명
prependbooleanfalsetrue로 설정된 경우, 디렉토리가 push() 대신 unshift()로 배열에 추가됩니다.

addComponent

컴포넌트를 자동으로 임포트하도록 등록합니다.

사용법

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'),
    })
  },
})

타입

function addComponent (options: AddComponentOptions): void

매개변수

options: 다음 속성을 가진 객체:

속성타입필수설명
namestringtrue컴포넌트 이름.
filePathstringtrue컴포넌트의 경로.
pascalNamestringfalse파스칼 케이스 컴포넌트 이름. 제공되지 않으면 컴포넌트 이름에서 생성됩니다.
kebabNamestringfalse케밥 케이스 컴포넌트 이름. 제공되지 않으면 컴포넌트 이름에서 생성됩니다.
exportstringfalse명명된 또는 기본 내보내기를 지정합니다. 제공되지 않으면 'default'로 설정됩니다.
shortPathstringfalse컴포넌트의 짧은 경로. 제공되지 않으면 컴포넌트 경로에서 생성됩니다.
chunkNamestringfalse컴포넌트의 청크 이름. 제공되지 않으면 컴포넌트 이름에서 생성됩니다.
prefetchbooleanfalse이러한 속성(prefetch/preload)은 Lazy 접두사가 있는 컴포넌트가 webpack의 매직 코멘트를 통해 처리되는 방식을 구성하기 위해 프로덕션에서 사용됩니다. webpack 문서에서 자세히 알아보세요.
preloadbooleanfalse이러한 속성(prefetch/preload)은 Lazy 접두사가 있는 컴포넌트가 webpack의 매직 코멘트를 통해 처리되는 방식을 구성하기 위해 프로덕션에서 사용됩니다. webpack 문서에서 자세히 알아보세요.
globalbooleanfalse활성화된 경우, 컴포넌트를 전역적으로 사용할 수 있도록 등록합니다.
islandbooleanfalse활성화된 경우, 컴포넌트를 아일랜드로 등록합니다. <NuxtIsland/> 컴포넌트 설명에서 아일랜드에 대해 더 읽어보세요.
mode'client' | 'server' | 'all'false이 옵션은 컴포넌트가 클라이언트, 서버 또는 둘 다에서 렌더링되어야 하는지를 나타냅니다. 기본적으로, 클라이언트와 서버 모두에서 렌더링됩니다.
prioritynumberfalse컴포넌트의 우선 순위, 여러 컴포넌트가 동일한 이름을 가진 경우, 가장 높은 우선 순위를 가진 것이 사용됩니다.

예제

npm 패키지에서 컴포넌트를 자동으로 임포트하고, 컴포넌트가 기본 내보내기가 아닌 명명된 내보내기인 경우, export 옵션을 사용하여 이를 지정할 수 있습니다.

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',
    })
  },
})