내용 (Content)

Nuxt UI는 Nuxt Content와 통합되어 아름다운 타이포그래피와 일관된 구성 요소 스타일을 제공합니다.

설치

시작하려면 공식 guide 또는 요약으로 다음과 같이 할 수 있습니다.

pnpm add @nuxt/content

그런 다음 @nuxt/content 모듈을 nuxt.config.ts 에 추가합니다.

nuxt.config.ts
export default defineNuxtConfig({
  modules: [
    '@nuxt/ui',
    '@nuxt/content'
  ],
  css: ['~/assets/css/main.css']
})
@nuxt/content 이후에 @nuxt/ui 를 modules 배열에 등록해야 합니다. 그렇지 않으면 산문 구성요소를 사용할 수 없습니다.

구성

Markdown 콘텐츠 파일에서 Tailwind CSS 클래스를 사용할 때 Tailwind가 필요한 유틸리티 클래스를 감지하고 생성할 수 있는지 확인해야 합니다. 기본적으로 Tailwind의 자동 콘텐츠 감지는 markdown 파일에 작성된 클래스를 선택하지 못할 수도 있습니다.

이 문제를 해결하려면 CSS 파일에 @sourcedirect를 사용하여 콘텐츠 디렉토리를 명시적으로 포함합니다.

app/assets/css/main.css
@import "tailwindcss";
@import "@nuxt/ui";

@source "../../../content/**/*";

이렇게 하면 다음과 같은 이점이 있습니다.

  • Tailwind는 콘텐츠 디렉토리에있는 모든 Markdown 파일을 스캔합니다.
  • 마크다운에 사용되는 모든 유틸리티 클래스(text-primary 같은)는 최종 CSS에 포함됩니다.
  • MDC 컴포넌트 또는 콘텐츠 내 사용자 정의 Vue 컴포넌트의 동적 클래스가 제대로 작동합니다.
또한 glob 패턴을 사용하여 스캔할 파일에 대해 더 구체적으로 설명할 수 있습니다.
  • @source "../../../content/docs/**/*.md" - docs 폴더에서만 마크다운 검색
  • @source "../../../content/**/*.{md,yml}" - Markdown과 YAML 파일 모두 포함
Tailwind의 자동 콘텐츠 감지 및 빌드 성능 최적화를 위한 모범 사례에 대해 자세히 알아보십시오.

구성 요소

@nuxt/content를 사용하여 문서를 작성할 수 있습니다. 이를 돕기 위해 페이지에서 사용할 수 있는 몇 가지 구성 요소를 만들었습니다.

  • 전체 텍스트 검색 명령 팔레트 ContentSearch , Algolia DocSearch 대신 사용
  • a navigationContentNavigation 구성요소가 있는 탐색 트리
  • a sticky Table of Contents with the ContentToc 구성 요소가 있는 스티커 카탈로그
  • a prev/다음 탐색 ContentSurround 구성 요소

타이포그래피

Nuxt UI는 모든 산문 컴포넌트의 자체 구현을 제공하므로 @nuxt/content로 렌더링된 markdown은 나머지 컴포넌트와 동일한 테마를 선택합니다.

전체 Typography시스템을 발견하고 풍부하고 일관된 콘텐츠 프레젠테이션을 위해 사용 가능한 모든 산문 구성 요소를 탐색합니다.

Utils @ 우틸스

Nuxt UI는 헬퍼를 제공하여 @nuxt/content가 반환한 데이터를 구성 요소가 예상하는 형식으로 재구성합니다.

mapContentNavigation @

이 유틸리티는 queryCollectionNavigation에서 탐색을 매핑하고 다양한 구성 요소에서 사용할 수있는 객체 배열로 재귀적으로 변환합니다.

mapContentNavigation(navigation, options?)

  • navigation : 탐색 트리(ContentNavigationItem 배열).
  • options (선택 사항):
    • labelAttribute``labelAttribute (문자열) 레이블로 사용할 필드 (title 기본값)
    • deep``deep (숫자 또는 정의되지 않음) 포함된 탐색 수준 제어(undefined 기본적으로 모든 수준 포함)

**예:**예: ** 아래 breadcrumb 예제에서 볼 수 있듯이 탐색 데이터를 올바른 형식으로 변환하는 데 일반적으로 사용됩니다.

app.vue
<script setup lang="ts">
import { mapContentNavigation } from '@nuxt/ui/utils/content'
import { findPageBreadcrumb } from '@nuxt/content/utils'

const route = useRoute()

const { data: navigation } = await useAsyncData('navigation', () => queryCollectionNavigation('content'))
const { data: page } = await useAsyncData(route.path, () => queryCollection('content').path(route.path).first())

const breadcrumb = computed(() => mapContentNavigation(
  findPageBreadcrumb(navigation.value, page.value?.path, { indexAsChild: true }),
  { deep: 0 }
).map(({ icon, ...link }) => link))
</script>

<template>
  <UPage>
    <UPageHeader v-bind="page">
      <template #headline>
        <UBreadcrumb :items="breadcrumb" />
      </template>
    </UPageHeader>
  </UPage>
</template>