在使用marked来做md解析的时候,部分解析规则可能并不是很如意,比如说,我在md中写了a标签,但是这些标签都是在当前页面替换的,而我想要的是新打开窗口。
marked 解析a标签处理
首先,marked是支持规则重新覆盖的,当然,可能在文档中不太好找,我也是找了一阵子才找到。
目前,我只是用到了href的接续规则覆盖,这里只写下相关的代码:
//markdown 解析器
var renderer = new marked.Renderer();
//重写解析规则
renderer.link = function(href,title,text){
return '<a href="'+href+'" title="'+text+'" target="_blank">'+text+'</a>';
}
article.html = marked(content,{renderer : renderer});
marked 解析html转义
在这一阵子的书写中又发现一个问题,在md中书写html结果把html给消毒了,额 翻译的“消毒水”。
例如:
//直接在md中书写以下内容,会在解析成的html中直接展现出来,并没有变成红色。
<span style="color:red;">红色字体</span>
毕竟,有时候md的展现样式不够丰富,可以稍微加点html润色一下,最终找了好久的配置文档才发现是某个配置导致的。
var marked = require('marked');
//markdown 解析器
var renderer = new marked.Renderer();
marked.setOptions({
renderer: new marked.Renderer(),
gfm: true,
tables: true,
breaks: false,
pedantic: false,
//请注意此处,修改为false即可。
sanitize: false,//消毒:意思是将html转义成&xxx等。
silent : true,
smartLists: true,
smartypants: false
});
以上。
参考文档: