데브허브 | DEVHUB | Ultimate Content Collections OverviewUltimate Content Collections Overview
- Astro 콘텐츠 컬렉션은 Next.js 대신 Astro를 콘텐츠 사이트에 사용하는 주된 이유로, 강력한 콘텐츠 관리 및 타입 안전성을 제공합니다. 🚀
- 컬렉션은
content.config.ts 파일에서 collections 객체를 내보내고, defineCollection 함수를 사용하여 정의됩니다. ⚙️
- 각 컬렉션은 데이터 가져오기 방식을 정의하는
loader를 필수로 가지며, 데이터 구조를 명확히 하는 schema (Zod 사용)를 선택적으로 가질 수 있습니다. 🏗️
- 로더 유형에는 로컬 파일용
file 및 glob 헬퍼, 원격 데이터를 위한 커스텀 인라인 로더, 그리고 데이터 저장 및 처리에 대한 세밀한 제어를 제공하는 고급 객체 로더가 있습니다. 📁
- 모든 콘텐츠 컬렉션 데이터는 빌드 시점에 정적으로 생성되는 빌드 타임 데이터이며, 런타임에 서버 사이드 렌더링(SSR)되지 않습니다. 🧱
getCollection (컬렉션의 모든 항목) 또는 getEntry (단일 항목) 헬퍼 함수를 사용하여 페이지에 데이터를 표시하며, 완벽한 타입 안전성을 보장합니다. 💡
- Zod 라이브러리를 통해 Markdown, JSON 등 어떤 소스에서든 데이터의 타입 안전성을 확보하고, 필요에 따라 데이터를 변환(예: 문자열을 날짜 객체로)할 수 있습니다. 🛡️
- 콘텐츠 컬렉션은 동적 라우트(예:
products/[slug].astro)와 원활하게 연동되어 개별 콘텐츠 페이지를 쉽게 생성할 수 있습니다. 🛣️
- 마크다운 파일의 경우,
getEntry는 HTML로 변환된 body와 headings 배열을 제공하며, await render(entry) 헬퍼를 통해 페이지에 렌더링할 수 있습니다. 📝
- 객체 로더는 API 키나 URL과 같은 사용자 정의 설정을 로더에 전달하여, 데이터 로딩 로직을 추상화하고 재사용성을 높이는 데 유용합니다. 🧩