最近写了一个大模型请求的前端页面,后端返回的数据要使用markdown的格式显示出来,这里记录一下功能的实现
1.涉及到两个js插件,marked.js,highlight.js,两个插件的地址分别为marked.js,highlight.js
其中marked.js直接下载文件,highlight.js要先选择语言在下载,使用里面的min.js文件,高亮样式在下载的安装包里面,可以选择一个你喜欢的样式,我这里用的是dark.css
// 引入依赖
<script src="js/highlight.min.js"></script>
<script src="js/marked.min.js"></script>
// 高亮样式
<link rel="stylesheet" href="style/dark.css" />
// 配置 marked 使用 highlight.js 进行代码高亮
marked.setOptions({
highlight: function (code, language) {
// highlight.js 默认支持语言检测,所以我们可以传递 null 作为语言参数
const highlighted = hljs.highlightAuto(code);
const highCode = `<pre><code class="hljs
${highlighted.language}">${highlighted.value}</code></pre>`; // 给代码块加背景
return highCode;
},
renderer: new marked.Renderer(),
pedantic: false,
gfm: true,
breaks: false,
sanitize: false, // 禁用转义
smartLists: true,
smartypants: false,
xhtml: false
});
const htmlContent = marked(markdownContent, {
});
// 将解析后的HTML内容显示到页面上
const lastNode = $('.talk').children().last();
lastNode.find('p').html(htmlContent);
2.markdown和高亮用上面代码基本解决了,但还有一个问题,后端的数据是长连接逐条返回,前端要模拟键盘打字回显到页面,但是这样格式就有了问题,还没有解决,有大佬做过或者有思路欢迎留言,谢谢谢谢!!!!
以上是为了记录此次开发的问题。