此需求分为多个步骤:
const md = new MarkdownIt();
this.result = md.render('## 你好')
上面的result 就是html所需要的代码格式
放在html元素上 用v-html即刻展示出来了
<p v-html="result "></p>
这里用到的就是第二个插件,highlight.js
const md = new MarkdownIt({
highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang))
{
try
{
return '<pre class="hljs"><code>' +
hljs.highlight(lang, str, true).value +
'</code></pre>';
} catch (__) { }
}
return '<pre class="hljs"><code>' + md.utils.escapeHtml(str) + '</code></pre>';
}
});
我是直接用的网上的样式,直接拿过来
新建的了一个css的文件,把样式贴进去就可以了
给大家安利一个链接吧
https://www.zhihu.com/question/60135717/answer/225583124
我用的就是里面李笑来老师的样式,直接copy
最后直接给大家上我的一个组件的全部代码
<template>
<div class="home">
<textarea type='text'
id=""
cols="30"
rows="10"
v-model="content"></textarea>
<p v-html="markdown"></p>
</div>
</template>
<script>
import '../assets/markdownhere.css'
import MarkdownIt from 'markdown-it'
import hljs from 'highlight.js';
import 'highlight.js/styles/default.css';
export default {
name: 'Home',
components: {
},
data () {
return {
content: '',
}
},
computed: {
markdown () {
const md = new MarkdownIt({
highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang))
{
try
{
return '<pre class="hljs"><code>' +
hljs.highlight(lang, str, true).value +
'</code></pre>';
} catch (__) { }
}
return '<pre class="hljs"><code>' + md.utils.escapeHtml(str) + '</code></pre>';
}
});
const result = md.render(this.content)
return result
}
},
methods: {
},
mounted () {
}
}
</script>
game over~~~