IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    React 实现代码高亮

    Durban发表于 2015-11-20 19:41:43
    love 0
    使用插件google的prettify和jquery的format 完成了一套很完美的代码高亮显示,还能自动格式化。先说jquery.format的接入【我这里开发是用的webpack】在引入文件中使用reqiure方法,把jquery.format加入到js代码中。require('./jquery.format.js');jquery.format.js 这个文件我放在了与引入文件同级的目录下就可以样就可以了。在说引入prettify到react中,这个当然是在html页面中进行的了,所以在html中引入 就这样就可以了。然后把我们需要的高亮代码的css也加入进来吧pre .str, code .str { color: #65B042; } /* string - green */ pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */ pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */ pre .typ, code .typ { color: #89bdff; } /* type - light blue */ pre .lit, code .lit { color: #3387CC; } /* literal - blue */ pre .pun, code .pun { color: #fff; } /* punctuation - white */ pre .pln, code .pln { color: #fff; } /* plaintext - white */ pre .tag, code .tag { color: #89bdff; } /* html/xml tag - light blue */ pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name - khaki */ pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */ pre .dec, code .dec { color: #3387CC; } /* decimal - blue */ pre.prettyprint, code.prettyprint { background-color: #000; -moz-border-radius: 8px; -webkit-border-radius: 8px; -o-border-radius: 8px; -ms-border-radius: 8px; -khtml-border-radius: 8px; border-radius: 8px; } pre.prettyprint { width: 95%; margin: 0.2em auto; padding: 1em; white-space: pre-wrap; } /* Specify class=linenums on a pre to get line numbering */ ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */ li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none } /* Alternate shading for lines */ li.L1,li.L3,li.L5,li.L7,li.L9 { } @media print { pre .str, code .str { color: #060; } pre .kwd, code .kwd { color: #006; font-weight: bold; } pre .com, code .com { color: #600; font-style: italic; } pre .typ, code .typ { color: #404; font-weight: bold; } pre .lit, code .lit { color: #044; } pre .pun, code .pun { color: #440; } pre .pln, code .pln { color: #000; } pre .tag, code .tag { color: #006; font-weight: bold; } pre .atn, code .atn { color: #404; } pre .atv, code .atv { color: #060; } }最后看下react里面是如何操作的在render方法里面操作,稍微有点基础知识的肯定都知道的。 render:function(){ if(this.props.data.length > 0){ return ( ID号 SQL Template 参数 备注 创建日期 {this.props.data.map(function(i){ let ctime = moment.unix(i.ctime).format('YYYY-MM-DD'); let template = $.format(i.template, {'method':'sql'}); let config = $.format(i.config, {'method':'json'}); return ( {i.autokid} {template} {config} {i.comment} bezhu de qing {ctime} ); })} ); }else{ return ; } }最后为了是的pretty的效果产生我们还要进行一个启动的操作componentDidMount(){ prettyPrint(); }, componentDidUpdate(){ prettyPrint(); },可以了,就是这样的。


沪ICP备19023445号-2号
友情链接