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

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

相关推荐
神秘的猪头8 分钟前
ES6 字符串模板与现代 JavaScript 编程教学
前端·javascript
kaikaile199526 分钟前
如何使用React和Redux构建现代化Web应用程序
前端·react.js·前端框架
江城开朗的豌豆26 分钟前
TS类型进阶:如何把对象“管”得服服帖帖
前端·javascript
Cache技术分享27 分钟前
226. Java 集合 - Set接口 —— 拒绝重复元素的集合
前端·后端
前端小咸鱼一条28 分钟前
13. React中为什么使用setState
前端·javascript·react.js
没有bug.的程序员43 分钟前
Spring Boot Actuator 监控机制解析
java·前端·spring boot·spring·源码
DarkBule_1 小时前
0成本get可信域名:dpdns.org公益域名获取全攻略
css·学习·html·github·html5
OpenTiny社区1 小时前
如何使用 TinyEditor 快速部署一个协同编辑器
前端·开源·编辑器·opentiny
IT_陈寒1 小时前
震惊!我用JavaScript实现了Excel的这5个核心功能,同事直呼内行!
前端·人工智能·后端
前端伪大叔2 小时前
freqtrade智能挂单策略,让你的资金利用率提升 50%+
前端·javascript·后端