컴포넌트
Nuxt Kit은 컴포넌트 작업을 돕기 위한 유틸리티 세트를 제공합니다. 컴포넌트를 전역 또는 로컬로 등록할 수 있으며, 컴포넌트를 스캔할 디렉토리를 추가할 수도 있습니다.
컴포넌트는 Nuxt 애플리케이션의 구성 요소입니다. 이들은 사용자 인터페이스를 생성하는 데 사용할 수 있는 재사용 가능한 Vue 인스턴스입니다. Nuxt에서는 기본적으로 components
디렉토리의 컴포넌트가 자동으로 임포트됩니다. 그러나 대체 디렉토리에서 컴포넌트를 임포트하거나 필요에 따라 선택적으로 임포트하려는 경우, @nuxt/kit
은 addComponentsDir
및 addComponent
메서드를 제공합니다. 이러한 유틸리티를 사용하면 컴포넌트 구성을 사용자 요구에 맞게 커스터마이즈할 수 있습니다.
컴포넌트 주입에 대한 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
다음 속성을 가진 객체:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
path | string | true | 컴포넌트를 포함하는 디렉토리의 경로(절대 또는 상대). 프로젝트 내부의 디렉토리를 참조하기 위해 Nuxt 별칭(~ 또는 @)을 사용할 수 있으며, require 와 유사하게 npm 패키지 경로를 직접 사용할 수 있습니다. |
pattern | string | string[] | false | 지정된 경로에 대해 실행될 패턴을 수락합니다. |
ignore | string[] | false | 지정된 경로에 대해 실행될 무시 패턴입니다. |
prefix | string | false | 이 문자열로 모든 일치하는 컴포넌트에 접두사를 붙입니다. |
pathPrefix | boolean | false | 경로에 따라 컴포넌트 이름에 접두사를 붙입니다. |
enabled | boolean | false | true 로 설정된 경우 이 디렉토리의 스캔을 무시합니다. |
prefetch | boolean | false | 이러한 속성(prefetch/preload)은 Lazy 접두사가 있는 컴포넌트가 webpack의 매직 코멘트를 통해 처리되는 방식을 구성하기 위해 프로덕션에서 사용됩니다. webpack 문서에서 자세히 알아보세요. |
preload | boolean | false | 이러한 속성(prefetch/preload)은 Lazy 접두사가 있는 컴포넌트가 webpack의 매직 코멘트를 통해 처리되는 방식을 구성하기 위해 프로덕션에서 사용됩니다. webpack 문서에서 자세히 알아보세요. |
isAsync | boolean | false | 이 플래그는 Lazy 접두사를 사용하든 사용하지 않든 상관없이 컴포넌트가 비동기(별도의 청크로)로 로드되어야 함을 나타냅니다. |
extendComponent | (component: Component) => Promise<Component | void> | (Component | void) | false | 디렉토리에서 발견된 각 컴포넌트에 대해 호출될 함수입니다. 컴포넌트 객체를 받아들이며 컴포넌트 객체 또는 컴포넌트 객체로 해결되는 프라미스를 반환해야 합니다. |
global | boolean | false | 활성화된 경우, 컴포넌트를 전역적으로 사용할 수 있도록 등록합니다. |
island | boolean | false | 활성화된 경우, 컴포넌트를 아일랜드로 등록합니다. <NuxtIsland/> 컴포넌트 설명에서 아일랜드에 대해 더 읽어보세요. |
watch | boolean | false | 파일 추가 및 파일 삭제를 포함하여 지정된 경로의 변경 사항을 감시합니다. |
extensions | string[] | false | Nuxt 빌더에서 지원하는 확장자입니다. |
transpile | 'auto' | boolean | false | build.transpile을 사용하여 지정된 경로를 트랜스파일합니다. 'auto' 로 설정된 경우, 경로에 node_modules/ 가 포함되어 있으면 transpile: true 로 설정됩니다. |
opts
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
prepend | boolean | false | true 로 설정된 경우, 디렉토리가 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
: 다음 속성을 가진 객체:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
name | string | true | 컴포넌트 이름. |
filePath | string | true | 컴포넌트의 경로. |
pascalName | string | false | 파스칼 케이스 컴포넌트 이름. 제공되지 않으면 컴포넌트 이름에서 생성됩니다. |
kebabName | string | false | 케밥 케이스 컴포넌트 이름. 제공되지 않으면 컴포넌트 이름에서 생성됩니다. |
export | string | false | 명명된 또는 기본 내보내기를 지정합니다. 제공되지 않으면 'default' 로 설정됩니다. |
shortPath | string | false | 컴포넌트의 짧은 경로. 제공되지 않으면 컴포넌트 경로에서 생성됩니다. |
chunkName | string | false | 컴포넌트의 청크 이름. 제공되지 않으면 컴포넌트 이름에서 생성됩니다. |
prefetch | boolean | false | 이러한 속성(prefetch/preload)은 Lazy 접두사가 있는 컴포넌트가 webpack의 매직 코멘트를 통해 처리되는 방식을 구성하기 위해 프로덕션에서 사용됩니다. webpack 문서에서 자세히 알아보세요. |
preload | boolean | false | 이러한 속성(prefetch/preload)은 Lazy 접두사가 있는 컴포넌트가 webpack의 매직 코멘트를 통해 처리되는 방식을 구성하기 위해 프로덕션에서 사용됩니다. webpack 문서에서 자세히 알아보세요. |
global | boolean | false | 활성화된 경우, 컴포넌트를 전역적으로 사용할 수 있도록 등록합니다. |
island | boolean | false | 활성화된 경우, 컴포넌트를 아일랜드로 등록합니다. <NuxtIsland/> 컴포넌트 설명에서 아일랜드에 대해 더 읽어보세요. |
mode | 'client' | 'server' | 'all' | false | 이 옵션은 컴포넌트가 클라이언트, 서버 또는 둘 다에서 렌더링되어야 하는지를 나타냅니다. 기본적으로, 클라이언트와 서버 모두에서 렌더링됩니다. |
priority | number | false | 컴포넌트의 우선 순위, 여러 컴포넌트가 동일한 이름을 가진 경우, 가장 높은 우선 순위를 가진 것이 사용됩니다. |
예제
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',
})
},
})
※이 페이지는 Nuxt.js 공식 문서의 비공식 번역 페이지입니다.
공식 문서의 해당 페이지는 여기 있습니다:
https://nuxt.com/docs/3.x/api/kit/components