html页面如何将后端流式消息的代码高亮显示?

前后端通过websocket进行通信,后端返回消息时采用流式返回,就像gpt官网回答问题。
前端的页面主要是html,想问问如何将后端返回的代码高亮显示,或者将代码放在md中。
我查了资料,用的最多的工具是highlight,想问问大家有没有相关的页面代码例子参考下
效果大概如下:
image.png
希望页面简单点,html实现即可

阅读 3.7k
3 个回答

把markdown丢到markdown解析器里生成html代码后,替换innerHTML就行,没你想象的这么复杂

使用prism https://github.com/PrismJS/prism
https://jsrun.net/MRdKp/edit

<head>
    <link href="https://cdn.bootcdn.net/ajax/libs/prism/9000.0.1/themes/prism.css" rel="stylesheet">
    <link href="https://cdn.bootcdn.net/ajax/libs/prism/9000.0.1/themes/prism-okaidia.css" rel="stylesheet">
</head>

<body>
    <section class="language-markup">
        <h2>code.language-css</h2>
        <code class="language-css">p { color: red; }</code>

        <h2>pre.language-css > code</h2>
        <pre class="language-css"><code>p { color: red; }</code></pre>

        <h2>pre > code.language-css</h2>
        <pre><code class="language-css">p { color: red; }</code></pre>

        <h2>pre.language-css > code.language-*</h2>
        <pre class="language-css"><code class="language-*">p { color: red; }</code></pre>

        <h2>code.lang-css</h2>
        <code class="lang-css">p { color: red; }</code>

        <h2>pre.lang-css > code</h2>
        <pre class="lang-css"><code>p { color: red; }</code></pre>

        <h2>pre > code</h2>
        <p>No language, should inherit .language-markup</p>
        <pre><code>&lt;p>hi!&lt;/p></code></pre>

        <h2>code.language-*</h2>
        <p>No language, should inherit .language-markup</p>
        <code class="language-*">&lt;p>hi!&lt;/p></code>

        <h2>code.language-none</h2>
        <p>Should not be highlighted.</p>
        <code class="language-none">&lt;p>hi!&lt;/p></code>
    </section>
    <script src="https://cdn.bootcdn.net/ajax/libs/prism/9000.0.1/prism.js"></script>
</body>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题