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怎么修改高亮风格

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作为一个前端程序猿,下面这些站会让你眼前一亮。 amazeui框架组建丰富 http://amazeui.org...
    欧巴冰冰阅读 8,994评论 18 303
  • 我们用初中三年去盼望高中三年 我们用高中三年去憧憬大学四年 而用大学四年去怀念中学六年 最终用我们的一生去祭奠我们...
    FINE_52e9阅读 135评论 0 0
  • 在伦敦的一条商业街上住着三个裁缝,这三个裁缝的手艺都差不多。有一天,一个裁缝在他的裁缝店里的窗户上挂出了一块招牌,...
    杨作辉阅读 412评论 1 4
  • 偶尔会梦见,沉溺在里面无法自拔。醒来不过梦一场。
    箬安阅读 87评论 0 0

友情链接更多精彩内容