入门
迁移
了解如何从 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已放弃,转而使用findSurroundwhere实用程序可以链接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 参考 中的查询方法的更多信息