javascript - SF markdown 的代码高亮工具是用的什么
怪我咯
怪我咯 2017-04-10 13:11:27
[JavaScript讨论组]

试了以下highlight.js
发现只实现四个空格后代码的自动高亮识别
没有预期的
"js "
的效果
希望有经验的人帮忙解答一下
谢谢

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
巴扎黑
  1. SegmentFault使用高亮方案是highlight.js。(这条未经考证,直接引用了 @woody 的答案)
  2. 该highlight.js高亮方案仅仅是对html里<code>或者其它指定标签(比如使用含hljs-前缀的class的标签)中的代码进行高亮,不包括markdown语法转义功能。
  3. 四个空格后代码、```符号包裹代码本质上是markdown语法(扩展)。
  4. sf在输出页面时,已经在后台进行了markdown语法的转义,将代码输出到了<code>标签中。然后前台才使用highlight.js进行高亮。
  5. 题主的情况,应该考虑在使用markdown转义方案之后,再去期许highlight.js完成高亮。或者使用highlight.js直接支持的html代码形式也可。
  6. 题主所说 实现四个空格后代码的自动高亮识别 ,我粗看highlight.js源码并未发现对这一特性的实现,当然目前我还没看仔细,暂时不做定论。highlight.js自身主动支持这一特性是可能的,也有可能是识别到了题主代码中的“特定标签”而产生了响应。

update:

  1. 订正:highlight.js 自动响应的标签是<pre><code> .. </code></pre>而不是上文2中所说的<code>...</code>
  2. 订正:相应的,上文4中应表述为将代码输出到了<pre><code>标签中
  3. 补充:highlight.js 可以手动增加对其它标签的响应,比如这样的方式:$('p.code').each(function(i, e) {hljs.highlightBlock(e)});具体可参考这里。
  4. 订正:上文6。阅读源码确认highlight.js本身不实现四个空格后代码的自动高亮识别。根据题主的回复了解到题主已在后台部署了markdown语法转义。
天蓬老师

没接触过这些面向程序员的产品,只能看本页源码瞎猜一下。
前台是用pagedown-extra插件增强了Markdown编辑器,用```分隔符取代码片段,挂钩到highlight上面格式化输出。
后台(保存至网站的内容、显示的时候不经Javascript库处理)是类似Github所用的pygments库,但这个库是Python的,考虑到本站是用PHP写的用Python增加了维护成本,加之代码显示没有行号,且有换行Bug,我估计是自己写的或是类似的PHP库。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号