vue3 解析markdwon生成文章
zhezhongyun 2025-01-05 21:22 32 浏览
引言
markdown是啥,相信大家都已经清楚了,一种程序员必备的文档格式。可以支持代码高亮,表格,图片,视频等一种文档格式
但是在vue3中如何来解析markdown文件呢?
效果
在效果图中,通过请求获取markdown源文件,然后解析成正常的html展示在页面上
当前效果可以查看在线文档
实现方式
咱们可以将整个解析markdwon文件到html的整个过程拆分成以下几个步骤:
- 获取markdown源文件
- markdown转换成html
- 美化样式
获取markdown内容
markdown.md是一个文件,那么如何获取markdonw里面的内容呢?
在进行第一步的时候,我想提出一个问题,请问你是如何获取本地json文件内容的? 通过问题转换,大家肯定就知道如何获取本地json内容了——通过fetch来获取嘛
那么咱们可以写出这样的代码:
fetch('./xxxx.json', {
method: 'GET',
mode: 'cors' // 允许发送跨域请求
}).then(function (response) {
//打印返回的json数据
response.json().then(function (data) {
// 获取到json文件的内容
})
})
.catch(function (e) {
// 失败后的异常处理
})
复制代码
既然获取json可以这么来,那么获取markdown.md是不是也可以这么来呢?
同理,咱们也可以这么来试一试,但是这里肯定有一个地方需要进行修改,那就是response.json(),markdown文件里面返回的肯定不是一个json文件,而是一个正常的文本,那么可以写出以下代码:
fetch(route.query.path as string, {
method: 'GET',
mode: 'cors', // 允许发送跨域请求
credentials: 'include',
headers: {
'Content-Type': 'text/plain'
}
})
.then(async function (response) {
//打印返回的json数据
response.text().then((data) => {
// 获取到markdown内容
})
})
.catch(function (e) {
// 获取失败的异常捕获
})
复制代码
效果如图
解析成html
拿到markdown的内容后,那就需要进行解析成正常的html了,那么这一步怎么做呢?
安装解析markdown语法的包:
npm install marked -S
复制代码
有关marked的介绍如下:
简单点的说是:
- 为速度而生
- 低级编译器,用于解析无缓存或长时间阻塞的标记
- 轻量级,同时实现所有的降价功能从支持的口味和规格
- 在浏览器、服务器或命令行界面(CLI)中工作
当然,该包也提供了在线demo:demo page
使用方式如下:
import { marked } from 'marked'
// marked 选项
marked.setOptions({
pedantic: false,
gfm: true,
breaks: false,
sanitize: false,
smartLists: true,
smartypants: false,
xhtml: false,
})
const htmlStr = marked('markdown 内容')
复制代码
有了这一步,页面的html就出来了,可以看到如下的效果:
美化代码
经过上面两步,初步的html内容就渲染出来了,但是这样的效果,有读者愿意看么?
接下来咱们来美化一下咱们的代码,美化代码的方式有以下几种:
- 引用现场的css
- 自己手动来实现css
美化就是缺少css嘛
在这里,咱们就来实现一个github的markdown的样式吧
github的markdown css文件已经有现成的库了,咱们只需要按照一下即可:
npm install github-markdown-css
复制代码
有了这个,咱们就好办了,改造一下代码:
import 'github-markdown-css'
复制代码
对的,就是这么简单,只需要导入这个包即可,就可以实现以下效果:
番外
说了这么多,需要给大家发一波福利??,优秀的你知道如何美化代码格式么?
相关推荐
- 前端面试:聊聊 meta 标签?(meta标签用法)
-
提供给页面的一些元信息(名称/值对),有助于SEO。Meta标签是HTML中用于定义文档类型声明的标签。它们通常被用在head标签中,与文档的body标签相关联。在一个有head...
- web网页性能分析系列(网页性能指标有哪些)
-
在前端开发中,App或者WebPage性能的好坏和响应速度,尤其是App端显得格外重要,一直都是前端很头疼的问题。专业的测试工具可以知道自己的网页还有哪些需要优化的地方,总体的评分是多少,是否合乎用...
- [抓狂瞬间] 5 大差异 + 布局绝招!前端元素面试通关秘籍
-
刚入行的搬砖工程师,面对面试必问题“行内元素和块级元素有啥区别”,是不是心跳加速,大脑却一片空白?别担心!这看似基础的问题,实则是面试逆袭的突破口。今天就带你深入剖析,用5个关键差异,解锁前端布...
- python中Django视图(view)的详解(附示例)
-
本篇文章给大家带来的内容是关于python中Django视图(view)的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一个视图函数(类),简称视图,是一个简单的Pyt...
- MySQL进行整库数据备份「表(结构+数据)、视图、函数、事件」
-
前言 通常情况下,我们需要改什么地方就备份什么地方就可以了,但也免不了需要整库备份的时候,本文记录实现MySQL使用脚本进行整库数据备份【表(结构+数据)、视图、函数、事件】 主要是使用mys...
- python入门-day14-周末小项目(python周末培训班哪个好)
-
周末小项目-简易记事本的内容。这是一个综合练习,结合之前学过的函数、文件操作和异常处理,设计一个简单的命令行记事本程序。我会用清晰的步骤和代码带你实现添加、查看、删除笔记并保存到文件的功能,确保...
- Python必会的50个代码操作(python代码介绍)
-
学习Python时,掌握一些常用的程序操作非常重要。以下是50个Python必会的程序操作,主要包括基础语法、数据结构、函数和文件操作等。1.HelloWorldprint("Hello,...
- ScalersTalk成长会Python小组第7周学习笔记
-
Scalers点评:在2015年,ScalersTalk成长会完成Python小组完成了《Python核心编程》第1轮的学习。到2016年,我们开始第二轮的学习,并且将重点放在章节的习题上。Pytho...
- 电脑CMD命令与电脑工作效率提升(cmd使用提升命令)
-
在日常使用电脑同时按“windows+R”,可以弹出来一个框然后输入CMD弹出以下框:在这个框中输入一些内容可以简化一些我们的电脑操作好的,以下是一些最常用的CMD命令,按功能分类整理,适合日常使用和...
- 多线程实现消息推送并可重试3次以及1小时后重试
-
#-*-coding:utf-8-*-"""CreatedonTueApr2209:05:462025@author:1""...
- RBAC权限模型(rbac权限模型的优点)
-
RBAC权限模型RBAC权限模型(Role-BasedAccessControl)即:基于角色的权限控制。这是目前最常被开发者使用也是相对易用、通用权限模型。准备工作CREATETABLE`s...
- 如何使用PIL生成验证码?(pixivic验证码)
-
web项目中遇到使用验证码的情况有很多,进行介绍下使用PIL生成验证码的方法。安装开始安装PIL的过程确实麻烦各种问题层出不绝,不过不断深入后就没有这方面的困扰了:windows安装:直接安装Pil...
- 技术是这样应用的(一)(技术的运用)
-
WindowsServer2003路由与远程访问在计算机网络教室使用过程中网络访问控制的实现目前很多计算机网络教室采用双网卡服务器的路由和远程访问功能,通过NAT地址转换实现教室内学生机的互联网访...
- Flask-RESTful 用法指南(flask写restful接口)
-
Flask-RESTful是一个Flask扩展,用于快速构建RESTfulAPI。它提供了简单的语法来创建资源路由,并内置了请求解析和响应格式化功能。##安装首先安装Flask-REST...
- Python办公自动化系列篇之三:PowerPoint演示文稿(.pptx)
-
作为高效办公自动化领域的主流编程语言,Python凭借其优雅的语法结构、完善的技术生态及成熟的第三方工具库集合,已成为企业数字化转型过程中提升运营效率的理想选择。该语言在结构化数据处理、自动化文档生成...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- HTML 参考手册 (28)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML常用标签 (29)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- HTML button formtarget 属性 (30)