如何在前端vue3中处理markdown并使用样式和代码高亮
创始人
2024-11-20 09:09:52
0

如何在前端vue3中处理markdown并使用样式和代码高亮

因为想要在前端实现实时渲染markdown,发现找不到对应的处理。搜了很久,终于找到了需要的方法,在这里分享一下

最终效果展示:
在这里插入图片描述

在前端vue3中处理markdown

读取markdown为string文本,然后通过最后markdown-it包转成markdown文件。

markdown-it | markdown-it 中文文档 (docschina.org)

安装依赖:

npm install markdown-it --save 

用法:script setup中

import MarkdownIt from 'markdown-it'  md = new MarkdownIt(); var result = md.render('# markdown-it rulezz!'); //传入文本 

template中直接用v-html绑定:

  

最终在页面显示:

在这里插入图片描述

此时会发现如果有代码的话,代码框没有样式,也没有高亮

导入一些其他的样式应该也是可以的,只需要看文件是怎么用引入的就行

给markdown添加样式

sindresorhus/github-markdown-css:复制 GitHub Markdown 样式的最小 CSS 数量

可以添加GitHub的markdown样式

npm install github-markdown-css 

引入依赖:

import 'github-markdown-css'; 

在生成显示markdown的标签加上对应的class:

  

可以根据需求引入官方这个:

 

然后发现有样式了,但是没有代码高亮

所以还需要加一点东西

wooorm/starry-night: Syntax highlighting, like GitHub

starry-night会生成基于代码高亮的html的hast 树或者css样式,以及自定义语法,具体可以看官方文档。

syntax-tree/hast-util-to-html:将 hast 序列化为 HTML 的实用程序 (github.com)

hast-util-to-html将html的hast 树转成HTML的工具。

两者的结合可以生成高亮的代码html文本

安装依赖:

npm install @wooorm/starry-night 
npm install hast-util-to-html 

官方示例:

import fs from 'node:fs/promises' import {common, createStarryNight} from '@wooorm/starry-night' import {toHtml} from 'hast-util-to-html' import markdownIt from 'markdown-it'  const file = await fs.readFile('example.md') const starryNight = await createStarryNight(common)  const markdownItInstance = markdownIt({   highlight(value, lang) {     const scope = starryNight.flagToScope(lang)      return toHtml({       type: 'element',       tagName: 'pre',       properties: {         className: scope           ? [               'highlight',               'highlight-' + scope.replace(/^source\./, '').replace(/\./g, '-')             ]           : undefined       },       children: scope         ? /** @type {Array} */ (             starryNight.highlight(value, scope).children           )         : [{type: 'text', value}]     })   } })  const html = markdownItInstance.render(String(file))  console.log(html) 

在代码中使用上就有一开始所介绍的效果了。

怎么实时显示流输出的markdown文本数据

可以看一下我写的这篇文章,说得很详细,有我本人写的具体实现:
vue3前端使用ollama搭建本地模型处理流并实时生成markdown-CSDN博客

相关内容

热门资讯

一分钟了解!wpk软件是正规的... 一分钟了解!wpk软件是正规的吗,小二互娱辅助,果然真的有辅助透视(有人有挂)1、小二互娱辅助有没有...
一分钟揭秘!佛手在线有挂吗,熊... 一分钟揭秘!佛手在线有挂吗,熊猫辅助器视频教程,好像存在有辅助开挂(有挂方法)1、进入到熊猫辅助器视...
一分钟揭秘!hhpoker透视... 一分钟揭秘!hhpoker透视工具,广西友乐辅助app,真是存在有辅助脚本(有挂解密)1.广西友乐辅...
终于知道!wpk俱乐部怎么作必... 终于知道!wpk俱乐部怎么作必弊,吉祥填大坑脚本小程序,一直是有辅助脚本(了解有挂)吉祥填大坑脚本小...
揭秘几款!德州圈脚本,佛手在线... 揭秘几款!德州圈脚本,佛手在线辅助,一直真的有辅助插件(发现有挂)1、在佛手在线辅助插件功能辅助器技...
专业讨论!wpk显示有作必弊,... 专业讨论!wpk显示有作必弊,丰城呱呱辅助器,总是存在有辅助神器(有挂总结)1、每一步都需要思考,不...
查到实测辅助!hhpoker辅... 查到实测辅助!hhpoker辅助挂下载,微信小程序微乐辅助器破解版,本来真的是有辅助透视(有挂方法)...
详细说明!wepoker作必弊... 详细说明!wepoker作必弊视频,禅游辅助,好像是有辅助下载(新版有挂)1、下载好禅游辅助脚本下载...
科普分享!wepoker的辅助... 科普分享!wepoker的辅助器,皇豪互众辅助软件是干嘛的,果然是有辅助神器(有挂秘籍)皇豪互众辅助...
推荐一款!德普软件,微信小程序... 推荐一款!德普软件,微信小程序途游四川辅助器,果然有辅助透视(有挂方略)一、微信小程序途游四川辅助器...