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

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

相关推荐
程序员黑豆6 分钟前
鸿蒙应用开发之@Styles 装饰器:定义可复用的组件样式
前端·harmonyos
程序员码歌8 分钟前
我全程用 AI开发了一款微信小游戏,上线了
android·前端·游戏开发
咩咩啃树皮10 分钟前
第52篇:前端工程化完整体系精讲——Vite构建、模块化、打包原理、规范体系、面试终极通关
前端·面试·职场和发展
妙码生花11 分钟前
从 PHP 到 AI + Golang,程序员自救转型手记(四十八):菜单规则管理实现
前端·后端·ai编程
FogLetter12 分钟前
当JavaScript学会“分身术”:异步编程的进化简史
前端·javascript·面试
hunterandroid32 分钟前
[鸿蒙从零到一] HarmonyOS 分布式能力与设备协同实战:从发现设备到任务闭环
前端
lichenyang4531 小时前
从图片创作到本地可复现的 AIGC 全栈闭环:AIGC Creative Studio 实践复盘
前端·后端
牧艺1 小时前
别急着 Vibe Coding:AI 三小时写完需求后,我为什么宁愿多花一天
前端·agent·vibecoding
java1234_小锋1 小时前
Vue3+Vite简介以及构建第一个HelloWorld实例
前端·javascript·vue.js·vite
前进的搬砖er1 小时前
1.cesium 的基础知识篇
前端