连接SSE后发送数据流使用markdown-it更改样式并且使用highlight.js美化代码编辑器

下载 markdown-it 和 highlight.js

node 复制代码
npm install markdown-it
npm install highlight.js

创建md.js文件

我是放在components文件夹里,先引入markdown-it,然后再对MarkdownIt的代码进行样式优化,pre标签代表的是代码回显,我还在里面顶部加了一行可以复制代码的样式,这样到新的界面引入就可以用了。

js 复制代码
import MarkdownIt from 'markdown-it';
import hljs from 'highlight.js';

const md = new MarkdownIt({
  highlight: function (str, lang) {
    if (lang && hljs.getLanguage(lang)) {
      try {
        return `<pre class="hljs"><div style="display:flex;align-items:center;justify-content:space-between;background-color:#50505a;padding: 5px 16px;"><div>${md.utils.escapeHtml(lang || '')}</div><div class="copy-button copy-icon" onclick="alert('复制成功')"></div></div><div style="padding: 10px 16px;">${hljs.highlight(str, { language: lang, ignoreIllegals: true }).value}</div></pre>`;
      } catch (__) {}
    }
    return `<pre class="hljs"><div style="display:flex;align-items:center;justify-content:space-between;background-color:#50505a;padding: 5px 16px;"><div>${md.utils.escapeHtml(lang || '')}</div><div class="copy-button copy-icon" onclick="alert('复制成功')"></div></div><div style="padding: 10px 16px;">${md.utils.escapeHtml(str)}</div></pre>`;
  }
});

export default md;

修改默认样式

css 复制代码
p {
    margin: 0;
}
ol,ul{
    margin: 0;
    padding-left: 2em;
}
h1, h2, h3, h4, h5, h6 {
    margin: 0;
    padding: 0;
}

引入md.js

vue3 复制代码
<template>
    <div v-html="md.render(内容)"></div>
</template>
<script setup>
    import md from '../components/md';
</script>

这样成形的样式就出来啦,目前还在不断优化中,欢迎提出建议

相关推荐
JSON_L2 小时前
Vue rem回顾
前端·javascript·vue.js
brzhang3 小时前
颠覆你对代码的认知:当程序和数据只剩下一棵树,能读懂这篇文章的人估计全球也不到 100 个人
前端·后端·架构
斟的是酒中桃4 小时前
基于Transformer的智能对话系统:FastAPI后端与Streamlit前端实现
前端·transformer·fastapi
烛阴4 小时前
Fract - Grid
前端·webgl
JiaLin_Denny4 小时前
React 实现人员列表多选、全选与取消全选功能
前端·react.js·人员列表选择·人员选择·人员多选全选·通讯录人员选择
brzhang4 小时前
我见过了太多做智能音箱做成智障音箱的例子了,今天我就来说说如何做意图识别
前端·后端·架构
为什么名字不能重复呢?5 小时前
Day1||Vue指令学习
前端·vue.js·学习
eternalless5 小时前
【原创】中后台前端架构思路 - 组件库(1)
前端·react.js·架构
Moment5 小时前
基于 Tiptap + Yjs + Hocuspocus 的富文本协同项目,期待你的参与 😍😍😍
前端·javascript·react.js
Krorainas6 小时前
HTML 页面禁止缩放功能
前端·javascript·html