连接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>

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

相关推荐
佛系打工仔5 小时前
绘制K线第二章:背景网格绘制
android·前端·架构
计算机毕设VX:Fegn08956 小时前
计算机毕业设计|基于springboot + vue医院设备管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
明天好,会的6 小时前
分形生成实验(五):人机协同破局--30万token揭示Actix-web状态管理的微妙边界
运维·服务器·前端
C_心欲无痕7 小时前
nginx - alias 和 root 的区别详解
运维·前端·nginx
北辰alk7 小时前
Vue 路由信息获取全攻略:8 种方法深度解析
vue.js
北辰alk7 小时前
Vue 三剑客:组件、插件、插槽的深度辨析
vue.js
北辰alk7 小时前
Vue Watch 立即执行:5 种初始化调用方案全解析
vue.js
北辰alk7 小时前
Vue 组件模板的 7 种定义方式:从基础到高级的完整指南
vue.js
北辰alk7 小时前
深入理解 Vue 生命周期:created 与 mounted 的核心差异与实战指南
vue.js