如何阻止Marked插件将所有内容都用p标签包裹起来
正在用marked
+highlight.js
写项目,以下是配置(Vue项目)
import marked from 'marked'
import hljs from 'highlight.js'
import 'highlight.js/styles/googlecode.css'
marked.setOptions({
highlight: (code) => hljs.highlightAuto(code).value
})
Vue.directive('highlight', function(el, { value }) {
console.log(marked(value))
el.innerHTML = marked(value)
})
但是打印出来的marked(value)
结果却是:
<p><h1 id="title">title</h1></p>
<p><h2 id="-">标题</h2></p>
<p><p>标题</p></p>
<p><h3 id="-">第二个标题</h3></p>
<p><p>第二段文档</p></p>
<pre><code class="lang-html"><button></button>
</code></pre>
所有的代码都被p标签包裹起来了。请问如何解决这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,需要澄清以下概念。
marked
模块的作用是用来将markdown文档转为html文档highlight.js
的作用是用来高亮html的代码部分因此,
如果你的文档已经是html文档了,没有必要再使用
marked
如果需要高亮代码,那么只需要高亮
pre code
包裹的部分来看下面的示例
最后打印的结果是
来看第二个示例
打印的结果是
由此,可以判断你传入的value,其实已经是html文档了,不需要
marked
再转换一次,只需要使用highlight.js
来高亮
代码块即可。最后改为以下代码即可