美文网首页基础前端
使用 highlightjs 点亮你的代码

使用 highlightjs 点亮你的代码

作者: CondorHero | 来源:发表于2019-09-25 18:53 被阅读0次

    平常浏览网页,有时看到个人站点的博客,除了网站自定义样式比较好看外,上面粘贴的代码的风格也很好看。就比如简书的代码风格是这样的。


    黑色背景,代码也是花花绿绿的。其他比较常见的样式就是浅颜色的。这个效果肯定是用插件搞得。看了下比较流行的是:Highlight.jsPrismJS,去 npm 看了下下载量,如下: 对比下载量

    很明显 highlight.js 更受欢迎,而且我学完 highlight.js 也发现这个比较简单,样式多也挺好看。

    一、学习前的了解

    先去官网看看:https://highlightjs.org/

    官网
    简单翻译下网站的门面。Syntax highlighting for the Web :Web的语法高亮。网站演示的数据类型是 json(language: json) ,使用的样式是:style: railscasts。
    • 185 languages and 89 styles // 一共支持 185 种语言,内含 89 种 css 样式。
    • automatic language detection //自动检测语言
    • multi-language code highlighting // 多语言代码高亮
    • available for node.js //支持服务端的 node.js
    • works with any markup // 不止支持代码,适用于任何标记
    • compatible with any js framework //兼容任何 js 框架,它的版本很多无论你怎么写代码都能无脑兼容你的前端代码。、

    Get version 9.15.10 目前 2019 年 09 月 01 日的最高版本,点击进入可进行下载。usage 链接的是说明文档。

    今天就不是用 Vue 框架进行演示了。仅适用本地的 HTML 文件进行测试。

    二、下载

    进入 https://highlightjs.org/download/ 进行下载。
    第一种方法就是使用网站提供的 cdn。


    很明显我们的用第二种自己下载引包:
    下载需要使用的包
    下载文件的目录:
    文件目录
    三、实战使用

    一共四步:

    • 引入 style 里面的一个默认 css 样式
    • 引入 唯一的 js 文件
    • 初始化,直接调用一个方法。hljs.initHighlightingOnLoad(); 是用来识别<pre><code class="json">...</code></pre>的。
    • 代码放入 标签<pre><code class="json">...</code></pre>,class 用来指定我们放入代码的数据类型,不写的话,程序可自动检测。防止出错,最好写上。

    完整代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>语法高亮</title>
        <link rel="stylesheet" href="./default.css">
        <script src="./highlight.pack.js"></script>
        <script>hljs.initHighlightingOnLoad();</script>
    </head>
    <body>
        <pre>
            <code>
    #[derive(Debug)]
    pub enum State {
        Start,
        Transient,
        Closed,
    }
    
    impl From<&'a str> for State {
        fn from(s: &'a str) -> Self {
            match s {
                "start" => State::Start,
                "closed" => State::Closed,
                _ => unreachable!(),
            }
        }
    }
            </code>
        </pre>
    </body>
    </html>
    
    默认的样式
    四、一个小坑

    我在测试的时候,在 code 标签里面直接放入 html 的标签发现不行,例如<h1>我是一级标签</h1> 标签老是被浏览器给自动解析了。解决办法就是你不能直接写 html 标签。必须使用&lt; 来替代标签的<&gt; 来替代标签的 >。在举个例子,这个我引用的css 样式是 monokai-sublime.css 这个样式比较像 sublime 的风格,经典款我比较中意这个。
    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>语法高亮</title>
        <link rel="stylesheet" href="./monokai-sublime.css">
        <script src="./highlight.pack.js"></script>
        <script>hljs.initHighlightingOnLoad();</script>
    </head>
    <body>
        <pre>
            <code>
    &lt;h1&gt;一级标题&lt;/h1&gt;
    &lt;h2&gt;一级标题&lt;/h2&gt;
    &lt;h3&gt;一级标题&lt;/h3&gt;
    &lt;h4&gt;一级标题&lt;/h4&gt;
    &lt;!-- here goes the rest of the page --&gt;
            </code>
        </pre>
    </body>
    </html>
    
    html坑

    下载的样式配色还是比较好看的完全没需要自定义,我还相中了两款一起来看看吧。
    这是引用 railscasts.css 的效果:


    railscasts.css

    还有一个 dark.css 也比较好看:


    dark.css

    写作日期:
    2019.09.01 22:51

    相关文章

      网友评论

        本文标题:使用 highlightjs 点亮你的代码

        本文链接:https://www.haomeiwen.com/subject/wotfyctx.html