定义内容集合
了解如何在 Nuxt 应用中定义和配置内容集合。
Nuxt Content 会解析 content 目录中的 Markdown、YAML、JSON 等内容文件。通过内容集合,你可以为不同类型的内容声明来源、字段结构和查询方式。
什么是内容集合
内容集合用于组织一组具有相同用途的内容。例如,文档、博客、更新日志和产品资料都可以分别定义为独立集合。
集合的好处包括:
- 明确内容来源和路径规则。
- 为字段结构提供类型约束。
- 让查询代码更稳定、更容易维护。
- 便于为不同内容类型设置不同的校验规则。
基础配置
在项目根目录创建或更新 content.config.ts:
import { defineCollection, defineContentConfig } from '@nuxt/content'
export default defineContentConfig({
collections: {
docs: defineCollection({
type: 'page',
source: 'docs/**/*.md'
}),
blog: defineCollection({
type: 'page',
source: 'blog/**/*.md'
})
}
})
集合类型
常见集合类型包括:
page:适合直接渲染为页面的 Markdown 内容。data:适合结构化数据,不一定直接对应路由页面。
选择类型时,应根据内容是否需要直接生成页面来判断。
查询集合
定义集合后,可以通过 queryCollection 查询内容:
const posts = await queryCollection('blog')
.order('date', 'DESC')
.all()
查询文档详情时,可以结合路径:
const doc = await queryCollection('docs')
.path('/docs/framework/define')
.first()
维护建议
- 集合名称保持简短稳定。
- 内容路径规则应尽量明确,避免多个集合重复匹配同一文件。
- 对外展示的内容建议补齐
title、description、date等基础字段。 - 修改集合配置后,应重新运行类型检查和静态生成。
