You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Nuxt Content将Markdown内容插入Nuxt静态页面?

NuxtJS Content 静态页面注入Markdown内容问题

背景信息

我正在使用NuxtJS Content搭建博客,内容主要来自Markdown文件。已掌握基于/content目录下的MD文件创建动态页面的方法,但不知道如何将其中一个文件的内容注入到静态页面中。项目目录结构如下:

content/
├── blog/
│   ├── post1.md
│   ├── post2.md
├── privacy/
│   ├── policy.md
│   └── something-else.md
pages/
├── blog/
│   ├── _slug.vue
├── privacy/
│   ├── _slug.vue
├── privacy.vue
├── index.vue

目前我能通过以下代码基于policy.md生成动态页面:

<template>
    <article>
      <nuxt-content :document="policy" />
    </article>
</template>

<script>
export default {
  async asyncData({ $content, params }) {
    const policy = await $content('privacy', params.slug).fetch()
    return { policy }
  }
}
</script>

但我不想通过MD生成动态页面,也不想在路由中使用slug,而是希望将policy.md的内容直接插入到privacy.vue中,却不知如何操作。

我的尝试

我用上述方法尝试实现时未能成功。console.log(policy)返回[object] [OBJECT],console.log(policy.title)返回undefined,这能说明什么问题?(我正在提升自己的调试能力)

为什么该方法在_slug.vue中有效,但在page.vue中无效?我感觉自己缺少相关的上下文知识,不清楚正确的实现方式。

解决方案

问题根源

在privacy.vue这类静态页面中,不存在params.slug参数——静态页面的路由固定(/privacy),不像动态页面_slug.vue会从URL中捕获slug参数。直接使用$content('privacy', params.slug)会因路径错误无法获取到目标文件,返回的对象并非预期的文档内容。

正确实现代码

在privacy.vue中,直接指定要获取的Markdown文件名即可,无需依赖params.slug:

<template>
  <article>
    <nuxt-content :document="policy" />
  </article>
</template>

<script>
export default {
  async asyncData({ $content }) {
    // 明确指定获取privacy目录下的policy.md文件
    const policy = await $content('privacy', 'policy').fetch()
    // 调试时可以用JSON.stringify查看完整对象结构
    console.log(JSON.stringify(policy, null, 2))
    return { policy }
  }
}
</script>

调试结果解读

  • console.log(policy)返回[object] [OBJECT]仅说明变量是一个对象,但无法确定其具体内容,改用console.log(JSON.stringify(policy, null, 2))可以展开对象结构,排查是否获取到了正确的文档数据。
  • console.log(policy.title)返回undefined,说明当前policy对象中没有title属性,核心原因是未正确获取到policy.md的内容(多数是路径参数错误导致的获取失败)。

内容的提问来源于stack exchange,提问作者ConstanceHermit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:21:33