组件

内容渲染器

将您的组件从 AST 转换为美妙的模板。

<ContentRenderer> 组件用于渲染通过 queryCollection() 查询获得的文档。

此组件 仅支持Markdown 文件。

属性

属性默认值类型描述
value{}ParsedContent要渲染的文档。
tag'div'string渲染器元素使用的标签名(如果有使用)。
excerptfalseboolean是否仅渲染摘要而不渲染其余内容。
components{}object用于渲染的自定义组件映射。此属性将传递给 Markdown 渲染器,不影响其他文件类型。
data{}object (必需)将注入到 Markdown 内容中的变量映射,用于后续绑定变量。
proseundefinedboolean是否渲染 Prose 组件而非 HTML 标签。
classundefinedstringobject用于渲染的根标签的类名。
unwrapfalsebooleanstring需要去除包装的标签,多个标签用空格分隔。例如:'ul li'

例子

pages/[...slug].vue
<script lang="ts" setup>
const route = useRoute()
const { data: page } = await useAsyncData(route.path, () => {
  return queryCollection('docs').path(route.path).first()
})
</script>

<template>
  <ContentRenderer v-if="page" :value="page" />
</template>

处理缺失页面

如果查询的内容缺失,您可以显示自定义的备用提示信息

pages/[...slug].vue
<script lang="ts" setup>
const route = useRoute()
const { data: page } = await useAsyncData(route.path, () => {
  return queryCollection('docs').path(route.path).findOne()
})
</script>

<template>
  <template v-if="page">
    <ContentRenderer :value="page" />
  </template>
  <template v-else>
    <div class="empty-page">
      <h1>页面未找到</h1>
      <p>抱歉!您查找的内容不存在。</p>
      <NuxtLink to="/">返回首页</NuxtLink>
    </div>
  </template>
</template>

处理空页面

如果查询的内容为空,您可以显示自定义的备用提示信息