ccl*_*eve 10 vue.js nuxt.js nuxt-content
我在我的应用程序中使用 nuxt / content ,它工作正常。在应用程序的另一部分,我想从数据库中获取一些降价并显示它。
let mytext = "Some *markdown* fetched from a db here."
<nuxt-content :document="mytext" />
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我缺少一个解析步骤;当您执行$content("a_page_title_here").fetch()此操作时,它会解析获取的文本并将其作为结构化 json 呈现给组件。
如何使用$content解析文本,以便将其传递给组件进行显示?
我敢打赌有一种方法可以做到这一点,但文档不包含描述您可以使用$content.
如果有一种简单的方法来使用底层 Remark 组件,我就可以做到。
ton*_*y19 16
nuxt@3和@nuxt/content@2您可以使用@nuxt/content的Markdown 转换器来解析任意字符串:
// ~/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)
Run Code Online (Sandbox Code Playgroud)
然后用@nuxt/contentsContentRendererMarkdown组件渲染它,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
nuxt@2和@nuxt/content@1您可以使用Markdown中的底层类@nuxt/content。它的异步toJSON()函数接受包含 Markdown 的文件名或字符串(通过gray-matter)进行解析,并解析可以传递给 的 JSON 对象<nuxt-content>.document。
要Markdown使用默认rehype插件进行初始化,请使用getDefaults()和processMarkdownOptions():
// ~/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
}
Run Code Online (Sandbox Code Playgroud)
然后在您的组件中使用它,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4237 次 |
| 最近记录: |