使用 nuxt/content 显示从数据库获取的 markdown

2024-05-22

我在我的应用程序中使用 nuxt / content ,它工作正常。在应用程序的另一部分,我想从数据库中获取一些降价并显示它。

let mytext = "Some *markdown* fetched from a db here."

<nuxt-content :document="mytext" />

这不起作用,因为我缺少一个解析步骤;当你这样做时$content("a_page_title_here").fetch()它解析获取的文本并将其作为结构化 json 呈现给组件。

我该如何使用$content解析文本,以便将其传递给组件进行显示?

我敢打赌有一种方法可以做到这一点,但文档不包含描述您可以执行的所有操作的参考部分$content.

如果有一种简单的方法来使用底层 Remark 组件,我就可以做到。


nuxt@3 and @nuxt/content@2

您可以使用@nuxt/content's 降价变压器 https://github.com/nuxt/content/blob/e82af75360c19e9ad345466e81931dbc5861a31e/src/runtime/transformers/markdown.ts解析任意字符串:

// ~/utils/parseMarkdown.js
import markdownParser from '@nuxt/content/transformers/markdown'

// first arg to parse() is for id, which is unused
export const parseMarkdown = md => markdownParser.parse('custom.md', md)

然后渲染它@nuxt/content's ContentRendererMarkdown https://github.com/nuxt/content/blob/e82af75/src/runtime/components/ContentRendererMarkdown.vue像这样的组件:

<script setup>
import { parseMarkdown } from '~/utils/parseMarkdown'

const result = ref(null)
const loadMarkdown = async () => {
  const data = await $fetch('https://example.com/page.md')
  result.value = await parseMarkdown(data)
}
loadMarkdown()
</script>

<template>
  <ContentRendererMarkdown :value="result" v-if="result" />
</template>

demo 1 https://stackblitz.com/edit/nuxt3-content-to-render-markdown-string?file=utils/parseMarkdown.ts,pages/index.vue

nuxt@2 and @nuxt/content@1

您可以使用底层Markdown班级来自@nuxt/content https://github.com/nuxt/content/blob/939caf36c547a6b4af6e303c52ed5989a5dea2f0/packages/content/parsers/markdown/index.js#L9. Its async toJSON()功能 https://github.com/nuxt/content/blob/939caf36c547a6b4af6e303c52ed5989a5dea2f0/packages/content/parsers/markdown/index.js#L121接受文件名或字符串(通过gray-matter https://www.npmjs.com/package/gray-matter#matter)包含要解析的 Markdown,并解析可以传递给的 JSON 对象<nuxt-content>.document.

初始化Markdown使用默认的rehype插件,使用getDefaults() https://github.com/nuxt/content/blob/939caf36c547a6b4af6e303c52ed5989a5dea2f0/packages/content/lib/utils.js#L4 and processMarkdownOptions() https://github.com/nuxt/content/blob/939caf36c547a6b4af6e303c52ed5989a5dea2f0/packages/content/lib/utils.js#L84:

// ~/utils/parseMarkdown.js
import Markdown from '@nuxt/content/parsers/markdown'
import { getDefaults, processMarkdownOptions } from '@nuxt/content/lib/utils'

export async function parseMarkdown(md) {
  const options = getDefaults()
  processMarkdownOptions(options)
  return new Markdown(options.markdown).toJSON(md) // toJSON() is async
}

然后在您的组件中使用它,如下所示:

<script>
import { parseMarkdown } from '~/utils/parseMarkdown'

export default {
  async asyncData({ $axios }) {
    const resp = await $axios.get('https://example.com/page.md')
    const page = await parseMarkdown(resp.data)
    return { page }
  }
}
</script>

<template>
  <nuxt-content :document="page" />
</template>

demo 2 https://stackblitz.com/edit/nuxt-content-to-render-markdown-string?file=pages%2Findex.vue

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 nuxt/content 显示从数据库获取的 markdown 的相关文章

随机推荐

  • 如何在Django中编写sql COALESCE

    我是姜戈的新手 如何将 COALESCE sql 查询集写入 django orm query SELECT COALESCE max CAST order no as UNSIGNED 0 as o id from nanossc Sal
  • 使用稍后在 C++ 中定义的类类型定义类成员

    就像我想做这样的事情一样 class Object public World Parent World This here Object World Parent World NULL Parent World Parent World c
  • Rails 4.1 AWS Beanstalk 找不到秘密密钥库

    我正在尝试在 AWS Beanstalk 上上传我的 Rails 项目 我已经运行 eb init eb start 并将数据库设置配置为指向 RDS 在我使用 git aws push 推送并等待 AWS 服务器启动后 提供的链接显示 5
  • 通过 Caffe 中的层提供数据的多种路径

    我想在 Caffe 中构建一个网络 其中传入的数据最初被分割 分别通过同一组层 最后使用 eltwise 层重新组合 此后 所有部件将作为一个斑点移动 除了学习的参数之外 数据并行移动的网络部分的层配置将是相同的 有没有一种方法可以在 Ca
  • 当 div 移动以填充其他淡出的 div 留下的空白空间时,如何为它们设置动画

    我有一组div 每个div对应一组类别 当我单击过滤器时 这将更改 div 的类 并根据这些类别使它们可见或隐藏 我控制 div 淡入 淡出的方式 它们做得缓慢而漂亮 但每次 div 消失时 保持不变的 div 会突然移动以填充隐藏的 di
  • Visual Studio 2010 - 在调试期间查看列表导致超时

    我正在尝试调试一个项目 突然遇到一个问题 如果我尝试查看它 枚举任何对象集合都会导致超时 如果我正常运行该程序 就没有问题 如果我尝试查看任何集合 例如列表 我会收到超时错误 整个事情就会崩溃 我认为我的一个更复杂的集合可能出了问题 所以我
  • 按不同日期拆分列表

    希望还有一个简单的 假设我有一个这样的集合 List
  • ODP.Net - OracleDataReader.读取速度非常慢

    我在 ODP Net 中的 OracleDataReader 方面遇到很多麻烦 基本上 我有一个参数化查询 需要 1 5 秒的时间来运行 返回大约 450 条记录 然后需要 60 90 秒的时间来循环 甚至没有代码在循环中运行 实际上是迭代
  • iOS 应用程序启动速度非常慢并且在 ImageLoaderMachO::loadCodeSignature 中停止

    我正在为 iOS 8 3 开发一个基于 Swift 的应用程序 我观察到该应用程序启动非常非常慢 并且似乎在应用程序加载过程中停滞不前 应用程序速度变慢before我的任何代码都会被执行 事实上 只有一个线程处于活动状态 仅使用了 60k
  • 计算div中有多少个元素

    我有一个div 里面有span 有没有一种方法可以计算 div 中有多少个元素 然后将其作为值给出 例如 一个 div 中有 5 个跨度 那么它会对其进行计数并发出警报 5 请使用 JavaScript 谢谢 如果你想要后代的数量 你可以使
  • C#中初始化和赋值有什么区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 变量初始化与赋值 https stackoverflow com questions 3779707 c variable initializations vs assignment 就像标题一样
  • 如何在基于其他数据帧的数据帧中创建联接?

    我有 2 个数据框 一份包含学生批次详细信息 另一份包含分数 我想加入 2 个数据框 数据框1包含 s1 s2 s3 Stud1 Stud2 Stud3 Stud2 Stud4 Stud1 Stud1 Stud3 Stud4 数据框2包含
  • 如何从另一个工作簿(excel)复制数据?

    我已经有一个可以创建工作表和其他一些东西的宏 创建工作表后 我是否想调用另一个宏 将数据从第二个 Excel 其打开 复制到第一个活动 Excel 文件 首先 我想复制到标题 但我无法让它工作 不断出现错误 Sub CopyData she
  • 使用 Python pdb 检查未处理异常原因的最简单方法是什么?

    我刚刚将所有单元测试数据从 JSON 转换为 YAML 现在代码中的某处引发了异常 更具体地说 这是打印的回溯 Traceback most recent call last File tests test addrtools py lin
  • 在 Python 中静默打印 PDF

    我正在尝试使用 Python 打印 PDF 而不打开 PDF 查看器应用程序 Adobe Foxit 等 我还需要知道打印何时完成 以删除文件 Here http permalink gmane org gmane comp python
  • 有没有纯Python的表类?

    我正在构建一个需要分析表格数据的应用程序 我想执行一些列操作 例如重命名列 删除列以及根据现有列的值计算新列的能力 我的第一选择是 Pandas 之类的东西 但是一个限制是这个项目必须是跨平台的并且非常容易在 virtualenv 中部署
  • 根据日期列过滤并创建列

    我有一个样本数据如下 date Deadline 2018 08 01 2018 08 11 2018 09 18 2018 12 08 2018 12 18 我想用代码中描述的条件填写截止日期列 如 1 DL 2 DL 3 DL 等 基于
  • 如何在线程和小程序中使用双缓冲

    我有一个关于何时调用绘制和更新方法的问题 我有游戏小程序 我想在其中使用双缓冲 但我无法使用它 问题是 在我的游戏中 有一个球在 run 方法内移动 我想知道如何使用双缓冲来交换屏幕外图像和当前图像 请有人帮忙 当同时存在 update 和
  • 当连接断开时,boost::asio::async_write 中的 WriteHandler 无法正常工作(防火墙/手动断开网络)

    我一直在尝试使用 boost asio 编写客户端 服务器应用程序 总的来说 该应用程序工作得很好 但是当连接 客户端 服务器 被防火墙或手动禁用新网络卡删除 这是代码片段 void write const CommunicatorMess
  • 使用 nuxt/content 显示从数据库获取的 markdown

    我在我的应用程序中使用 nuxt content 它工作正常 在应用程序的另一部分 我想从数据库中获取一些降价并显示它 let mytext Some markdown fetched from a db here