Vue中如何渲染Markdown和JSON
最近开发OpenAI提供的Assistant功能,其中有个插件叫做Code Interpreter,由于需要把Assistant的分析过程在Vue中展示一下,方便问题定位,所以Code Interpreter生成的代码肯定也是要展示的,其他过程几乎都是Markdown的格式,所以特此记录下在Vue中如何渲染Markdown,在其他场景也会经常遇到渲染Markdown的需求。
渲染Markdown
首先需要用到两个库,一个渲染markdown,一个用来高亮markdown中的代码:
{
"dependencies": {
"vue-markdown": "^2.2.4",
"highlight.js": "^11.9.0"
}
}
然后在 main.js
中导入一下:
import App from './App.vue'
import VueMarkdown from 'vue-markdown'
import hljs from 'highlight.js'
// 注意这里一定要引入高亮插件的CSS文件
import 'highlight.js/styles/github.css'
Vue.component('vue-markdown', VueMarkdown)
Vue.directive('highlight', (el) => {
const blocks = el.querySelectorAll('pre code')
blocks.forEach((block) => {
hljs.highlightBlock(block)
})
})
然后使用就比较简单了:
<template>
<div>
<vue-markdown v-highlight>{{ content }}</vue-markdown>
<div>
</template>
<script>
import VueMarkdown from 'vue-markdown'
export default {
name: 'Name',
components: {
VueMarkdown
},
data() {
return {
content: ''
}
}
}
</script>
用GPT生成一段测试Markdown,表现还不错,基本markdown语法都是支持的,代码高亮也是正常的:
渲染JSON
有时候Vue里需要展示JSON,这个时候就可以用 json-view
这个库:
{
"dependencies": {
"vue-json-views": "^1.3.0"
}
}
使用非常简单,指定数据和深度即可:
<template>
<div>
<json-view :data="data"
theme="one-dark"
:deep="depth">
</json-view>
</div>
</template>
<script>
import jsonView from 'vue-json-views'
export default {
name: 'Name'
components: {
jsonView
},
data() {
return {
data: '',
depth: 5
}
}
}
</script>
下面是一些具体参数: