用Javascript突出显示语法的代码[关闭]


109

您可以推荐哪种Java库来突出显示HTML中的<code>块?

(请给每个答案一个建议)。


Answers:


103

StackOverflow使用Prettify库。


我第二。Google代码将其用于自己的仓库突出显示(自从他们编写后),并自动检测该语言。
卡兰

当然,使用“自动”检测语言的语言只会使客户端的计算机/浏览器更加受力……
James

2
如果您知道Prettify的语言,则可以提高性能。由于有大量的语言读者,因此在StackOverflow中不使用此功能。
文森特·罗伯特,

刚刚将其添加到我的网站上,它非常好用,而且非常简单!
劳伦斯·多尔

@Vincent:它不仅提高了性能;-)
SamB 2010年

44

我最近开发了一种叫做Rainbow的彩虹。

主要设计目标是使核心库非常小,并使开发人员真正易于扩展。

参见http://rainbowco.de


2
我今天刚碰到Rainbow,在我看来,它能比Prettify更好地进行区分(例如,能够分辨何时rdf:type用作元素以及何时作为属性)。
Roger_S 2012年

3
这需要上升到顶部,克雷格(Craig)。我尝试了所有其他解决方案,只有Rainbow正确处理了Python,并具有可读的主题样式表。很棒的插件!
Blender 2012年


15

jQuery Syntax Highlighter是基于Google Prettify的一种新工具-一种非常非常流行的纯JavaScript语法荧光笔。

它支持诸如codepre块之类的东西,能够使用类名language-javascript来表示我们希望它突出显示,以及自动换行。您可以通过正常选择代码来复制和粘贴代码,而不必像其他许多代码一样打开原始视图。可以使用HTML5数据属性data-sh或在初始化时指定选项来进一步自定义。定期更新的绝佳稳定选择。


作者实际上说这是基于Google的Prettify,而不是SyntaxHighlighter。虽然看起来像SyntaxHighlighter 3,但设置所需的工作却少得多。感谢您的链接!
Tieson T. 2011年

15

Lea Verou的棱镜怎么样?

根据她在2012年6月发布的博客文章

  • 很小 压缩后压缩后的核心只有1.5KB。
  • 它的扩展性令人难以置信。不仅很容易添加新语言(这是当今所有语法高亮显示的语言),而且还可以扩展现有语言。
  • 它通过Web Workers支持并行性,以便在某些情况下提高性能。
  • 它不会强迫您使用任何特定于Prism的标记,甚至不会使用任何特定于Prism的类名,而无论如何都应使用标准标记。因此,您可以尝试一下,如果不喜欢,可以将其删除,并且不留痕迹。

由于易于添加新的语言定义,因此这最终成为我所有答案中的最佳选择。
Mike Grace



5

我对SHJS非常满意。它支持多种语言,并且看起来非常快速和准确。

这是我在Blog上使用它的示例。我正在使用自己的自定义CSS文件,该文件模拟Coda的语法突出显示。给我发电子邮件,如果你想使用它。


4

jQuery。语法是一个非常快速且轻量级的语法突出。它具有语法源文件的动态加载功能,并且可以使用CSS或模式集进行干净集成。

它是专门为填补空白而开发的-即:一种快速,干净的客户端语法解析器。


不幸的是,它认为标准的FpML消息是SPAM :)
ehosca 2011年

@ehosca,您能给我一些有关您遇到的问题的说明吗?
ioquatix 2011年

当我将XML粘贴在goo.gl/PPcDx中goo.gl/qSqm9时,它说内容无效,似乎是垃圾邮件。希望这可以帮助。
ehosca 2011年

您需要在文本中包含一些换行符,否则看起来就像是垃圾链接。我不记得我使用的确切公式,但是我认为,如果每行有多个URL,则该文本被视为垃圾邮件-这是因为大量的漫游器正在向系统发送垃圾邮件(语法-highlighing.com)。
ioquatix 2011年


3

我并不是在争辩,只是想说一句值得一提的是,如果您使用的是CMS或博客平台,则出于明显的原因,使用后端荧光笔会更好—看看Geshihttp://qbnz.com/highlighter/)(如果您有兴趣)。实际上,您可以将服务器设置为通过后端技术来解析HTML内容-因此完全不需要JS荧光笔。(他们添加的唯一功能是[使用swf]进行打印/复制的功能。)


2
这对我来说并不明显。为什么使用后端荧光笔更好?
Evan P.

1
是的,我也非常想知道“倾向于”向客户发送更大答复的“明显”是什么
ZenMaster 2013年

1
我更喜欢语法高亮显示在没有启用JS的设备上。此外,如果您要突出显示许多代码,则客户端荧光笔的运行时成本可能会非常高。也就是说,这取决于您的特定用例:)
James

哪些设备未启用JS?
杰克·吉芬


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.