react中使用marked+highlight.js 实现高亮效果

一、背景

最近在鼓捣md文件转html的相关东西,使用的marked第三方插件, 遇到代码高亮需求时,卡了半天。。一直不知道为什么无法高亮显示。 解决后记录下来供参考

二、问题

问题: react 使用marked+highlight.js样式不生效

原因: 需要手动引入highlight.js的样式文件

三、markedjs官网

官网demo

// Create reference instance
var myMarked = require('marked');

// Set options
// `highlight` example uses `highlight.js`
myMarked.setOptions({
  renderer: new myMarked.Renderer(),
  highlight: function(code) {
    return require('highlight.js').highlightAuto(code).value;
  },
  pedantic: false,
  gfm: true,
  tables: true,
  breaks: false,
  sanitize: false,
  smartLists: true,
  smartypants: false,
  xhtml: false
});

// Compile
console.log(myMarked('I am using __markdown__.'));

说明

highlight: function(code) {
    return require('highlight.js').highlightAuto(code).value;
}

code 参数是<code>中的初始内容, 该函数返回的是经highlight 处理 (给特定内容添加上class)后的内容。

四、react 使用

  1. 安装highlight.js
npm install highlight.js
  1. 组件中引入(重点!!!)
import hljs  from 'highlight.js'
import 'highlight.js/styles/github.css';

highlight需要自己手动引入css文件,否则页面样式不生效,只相当于给特殊内容添加了class

  1. 初始化参数
marked.setOptions({
  renderer: renderer,
  highlight: function(code) {
    return hljs.highlightAuto(code).value;
  },
  pedantic: false,
  gfm: true,
  tables: true,
  breaks: false,
  sanitize: false,
  smartLists: true,
  smartypants: false,
  xhtml: false
});
  1. 调用
<div dangerouslySetInnerHTML = {{__html: marked(this.props.docContent, { renderer: renderer }, )}}></div>
调试代码,发现code中有特殊的class,则说明,highlight处理标签已成功
image.png

成功

image.png

不过样式有点丑。。

五、相关文章

marked+highlight.js 高亮效果没出来,谁有例子highlight.js怎么修改高亮风格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值