定义内容集合

了解如何在 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()

维护建议

  • 集合名称保持简短稳定。
  • 内容路径规则应尽量明确,避免多个集合重复匹配同一文件。
  • 对外展示的内容建议补齐 titledescriptiondate 等基础字段。
  • 修改集合配置后,应重新运行类型检查和静态生成。