레이아웃
Nuxt Kit은 레이아웃 작업을 도와주는 유틸리티 세트를 제공합니다.
레이아웃은 페이지 주위에 공통 컴포넌트를 감싸기 위한 래퍼로 사용됩니다. 예를 들어, 헤더와 푸터로 페이지를 감쌀 수 있습니다. 레이아웃은 addLayout
유틸리티를 사용하여 등록할 수 있습니다.
addLayout
템플릿을 레이아웃으로 등록하고 레이아웃에 추가합니다.
Nuxt 2에서는 error
레이아웃도 이 유틸리티를 사용하여 등록할 수 있습니다. Nuxt 3+에서는 프로젝트 루트에 error.vue
페이지로 대체되었습니다.
사용법
import { addLayout, createResolver, defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
setup () {
const { resolve } = createResolver(import.meta.url)
addLayout({
src: resolve('templates/custom-layout.ts'),
filename: 'custom-layout.ts',
}, 'custom')
},
})
타입
function addLayout(layout: NuxtTemplate | string, name: string): void
매개변수
layout
: 템플릿 객체 또는 템플릿 경로를 가진 문자열. 문자열이 제공되면, 문자열 값을 src
로 설정한 템플릿 객체로 변환됩니다. 템플릿 객체가 제공되면, 다음 속성을 가져야 합니다:
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
src | string | false | 템플릿 경로. src 가 제공되지 않으면, 대신 getContents 가 제공되어야 합니다. |
filename | string | false | 템플릿의 파일명. filename 이 제공되지 않으면, src 경로에서 생성됩니다. 이 경우, src 옵션이 필요합니다. |
dst | string | false | 대상 파일 경로. dst 가 제공되지 않으면, filename 경로와 nuxt buildDir 옵션에서 생성됩니다. |
options | Record<string, any> | false | 템플릿에 전달할 옵션. |
getContents | (data) => string | Promise<string> | false | options 객체와 함께 호출되는 함수. 문자열 또는 문자열로 해결되는 프라미스를 반환해야 합니다. src 가 제공되면, 이 함수는 무시됩니다. |
write | boolean | false | true 로 설정하면, 템플릿이 대상 파일에 작성됩니다. 그렇지 않으면, 템플릿은 가상 파일 시스템에서만 사용됩니다. |
name
: 레이아웃을 등록할 이름 (예: default
, custom
등).
예제
이 예제는 헤더와 푸터로 페이지를 감싸는 custom
이라는 이름의 레이아웃을 등록합니다.
import { addLayout, defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
setup () {
addLayout({
write: true,
filename: 'my-layout.vue',
getContents: () => `<template>
<div>
<header>My Header</header>
<slot />
<footer>My Footer</footer>
</div>
</template>`,
}, 'custom')
},
})
그런 다음 페이지에서 이 레이아웃을 사용할 수 있습니다:
pages/about.vue
<script setup lang="ts">
definePageMeta({
layout: 'custom',
})
</script>
<template>
<div>About Page</div>
</template>
@vitejs/plugin-vue
가 가상 .vue
파일을 지원하지 않기 때문에, addLayout
의 첫 번째 인수에 write: true
를 전달하여 이 제한을 우회할 수 있습니다.
※이 페이지는 Nuxt.js 공식 문서의 비공식 번역 페이지입니다.
공식 문서의 해당 페이지는 여기 있습니다:
https://nuxt.com/docs/3.x/api/kit/layout