vue使用v-html如何渲染markdown?
安装marked的插件npm install marked -S2.文件内引入import { marked } from 'marked'3.使用计算属性进行markdown to htmlcomputed: {markdownToHtml(){return marked('# 我是markdown的一级标题');}}4.页面使用<div v-html="markdownToHtml"&g
·
1.简单使用
- 安装
marked
的插件
npm install marked -S
2.文件内引入
import { marked } from 'marked'
3.使用计算属性进行markdown to html
computed: {
markdownToHtml(){
return marked('# 我是markdown的一级标题');
}
}
4.页面使用
<div v-html="markdownToHtml"></div>
2. 深入使用
上述是最简单的用法,再高深一些的使用方式如下:
1.和上述一致
2.和上述一致
3.使用computed转换成html
语法:marked(markdownString, options, callback )
该种使用 + highlight 可高亮语法
computed: {
markdownToHtml() {
return marked(this.vHtml, {
renderer: new marked.Renderer(),
highlight: function(code, lang, callback) {
return require("highlight.js").highlight(lang, code).value;
},
langPrefix: "hljs ",
pedantic: false,
gfm: true,
tables: true,
breaks: false,
sanitize: false,
smartLists: true,
smartypants: false,
xhtml: false
});
}
},
4.和上述一致
5.在html引入highlight
highlight官网
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.4.0/styles/default.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.4.0/highlight.min.js"></script>
或者:
安装依赖
npm install highlight.js
引入依赖
import highlight from "highlight.js";
import "highlight.js/styles/default.css";
3. 遇到的问题
在渲染markdown的table
时,只有难看的格式,和期望的不一样。实际此时已经渲染出来样式了,只需要重写样式即可
将如下样式引入项目即可:
// markdown里的部分样式重写
.markdown_article {
table {
width: 100%;
/*表格宽度*/
max-width: 65em;
/*表格最大宽度,避免表格过宽*/
border: 1px solid #dedede;
/*表格外边框设置*/
// margin: 15px auto;
/*外边距*/
border-collapse: collapse;
/*使用单一线条的边框*/
empty-cells: show;
/*单元格无内容依旧绘制边框*/
}
table th,
table td {
height: 35px;
/*统一每一行的默认高度*/
border: 1px solid #dedede;
/*内部边框样式*/
padding: 0 10px;
/*内边距*/
}
table th {
font-weight: bold;
/*加粗*/
text-align: center !important;
/*内容居中,加上 !important 避免被 Markdown 样式覆盖*/
background: rgba(158, 188, 226, 0.2);
/*背景色*/
}
table tbody tr:nth-child(2n) {
background: rgba(158, 188, 226, 0.12);
}
// table tr:hover {
// background: #efefef;
// }
}
更多推荐
已为社区贡献11条内容
所有评论(0)