入门
迁移
了解如何从 Nuxt 内容 V1 升级到 Nuxt 内容 V2 和 Nuxt 3。
内容 V1 文档
阅读 V1 文档如何迁移
- 确保您的开发服务器 (
nuxt dev
) 未运行,并删除任何包锁定文件 (package-lock.json
、yarn.lock
或pnpm-lock.yaml
) - 升级到 Nuxt 3(查看 Nuxt 3 迁移指南)
- "nuxt": "latest"
+ "nuxt": "^3.0.0"
- 升级内容模块
- "@nuxt/content": "^1.15.1"
+ "@nuxt/content": "^2.0.0"
- 然后,重新安装您的依赖项
npm install
全局组件
Nuxt 内容 v2 的全局组件目录现在为 ~/components/content
。
- components/global
+ components/content
获取内容
没有全局 $content
变量,您可以使用 queryContent
可组合函数来获取内容。
- const posts = await this.$content('/blog', { deep: true }).only(['title']).fetch()
+ const { data: posts } = await useAsyncData('posts-list', () => queryContent('/blog').only(['title']).find())
queryContent
提供与旧版 $content
相同的实用程序,并进行了一些改进
fetch
已放弃,转而使用新的查找实用程序surround
已放弃,转而使用findSurround
where
实用程序可以链接queryContent() .where({ /* first step conditions */ }) .where({ /* second step conditions */ }) .find()
- 没有用于全文搜索的
search
实用程序。const doc = await getContentDocument(post.id)
- 有一个新的
fetchContentNavigation
实用程序,旨在根据content/
目录结构提供项目树。
渲染内容
<NuxtContent>
组件已删除,转而使用 <ContentRenderer>
组件。
<ContentDoc>
组件接收文档路径,然后获取并渲染文档。
<script setup lang="ts">
const route = useRoute()
const { data } = await useAsyncData('get-document', () => queryContent(route.path).findOne())
</script>
<template>
<ContentRenderer :value="data" />
</template>
如果您知道 route.path
将与您的内容文件相同,可以使用 <ContentDoc>
组件,速度会更快
<template>
<ContentDoc />
</template>
<ContentDoc>
组件将获取当前路由路径的文档,并使用 <ContentRenderer>
渲染它。
功能比较
功能/版本 | 内容 v1 | 内容 v2 |
---|---|---|
Nuxt 版本 | [email protected] | [email protected] |
支持的文件 | .md 、.yaml 、.yml 、.csv 、.json 、.json5 、.xml | .md 、.yaml 、.yml 、.csv 、.json 、.json5 |
全文搜索 | ✅ | ❌ |
响应式可组合函数 | ❌ | ✅ |
FrontMatter | ✅ | ✅ |
摘要 | ✅ | ✅ |
目录 | ✅ | ✅ |
MDC 组件语法 | ❌ | ✅ |
多源 | ❌ | ✅ |
区域设置支持 | ❌ | ✅ |
内容导航 | ❌ | ✅ |
查询内容
了解有关 API 参考 中的查询方法的更多信息