当前位置: 首页 > news >正文

在vue项目中使用markdown-it回显markdown文本

前言

其实有很多插件都是可以用来回显markdown文本的,这个插件也是其中之一。

文档地址:markdown-it | markdown-it 中文文档

这个文档在vue2和vue3里面都可以使用,所以还是比较推荐的

使用

安装
npm install markdown-it --save
应用
<template><div><p v-html="renderMdText(markDownText)" class="mdTextBox"></p></div>
</template><script>
import MarkdownIt from 'markdown-it'
import 'highlight.js/styles/default.css'
export default {
name:'markdownTest',
data(){return{//渲染的文本markDownText:"# 一号标题 \n\n  ## 二号标题 \n\n  ### 三号标题 \n\n 这是百度的链接 [https://www.baidu.com/](https://www.baidu.com/)\n\n ```javascript \n\n console.log('hello world') \n\n ```  \n\n 下面是一张图片 \n\n![风景图](https://img0.baidu.com/it/u=1090967238,1582698902&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500)",//初始化markdownRender:new MarkdownIt({html:true,linkify: true,typographer: true})}
},methods:{renderMdText(text){//生成htmlreturn this.markdownRender.render(text)}
}
}
</script><style lang="less" scoped>
.mdTextBox{width: 1400px;
}
</style>
效果

样式问题

虽然内容是显示出来了,但是我们必须注意样式问题

默认效果的清除

在很多项目初始化创建的时候,许多默认样式会被清除,其实就会导致markdown-it渲染的html文档样式的缺失

如图所示:标题,代码块,链接,文字行高等等应该有一些特定的样式和高亮,其实这都是因为一些项目把初始化的样式给去掉了,想要回显的比较好看一些,我们可以自己给定一些样式

 添加样式

在vue中,切记用deep

vue2语法为 /deep/ 选择器 {样式}

vue3语法为 :deep(选择器) {样式}

.mdTextBox{width: 1400px;/deep/ h1{font-size: 24px;line-height: 48px;font-weight: 800;}/deep/ h2{font-size: 22px;line-height: 42px;font-weight: 700;}/deep/ h3{font-size: 20px;line-height: 36px;font-weight: 600;}/deep/ img{width: 500px;}/deep/ a{color: #335fee;line-height: 20px;}/deep/ p  {line-height: 20px;}
}

效果如下

其他样式

在markdown文档中,其实还会有其他重要格式的样式,比如table,ul,ol等等的,需要保持原有的默认样式,同样的方法,用deep这些样式恢复

插件

当然了,常规的文本虽然能回显出来,但是还是有很多特殊结构的文本,我们就可以用到一些插件,在官方文档中有具体的说明,我这里就不过多写了,直接展示案例,方便看客老爷们cv

代码
<template><div><p v-html="renderMdText(markDownText)" class="mdTextBox"></p></div>
</template><script>
import MarkdownIt from 'markdown-it'
import MarkdownItAbbr from 'markdown-it-abbr'
import MarkdownItAnchor from 'markdown-it-anchor'
import MarkdownItFootnote from 'markdown-it-footnote'
import MarkdownItHighlightjs from 'markdown-it-highlightjs'
import MarkdownItSub from 'markdown-it-sub'
import MarkdownItSup from 'markdown-it-sup'
import MarkdownItTasklists from 'markdown-it-task-lists'
import MarkdownItTOC from 'markdown-it-toc-done-right'
import 'highlight.js/styles/default.css'
export default {
name:'markdownTest',
data(){return{markDownText:"# 一号标题 \n\n  ## 二号标题 \n\n  ### 三号标题 \n\n 这是百度的链接 [https://www.baidu.com/](https://www.baidu.com/)\n\n ```javascript \n\n console.log('hello world') \n\n ```  \n\n 下面是一张图片 \n\n![风景图](https://img0.baidu.com/it/u=1090967238,1582698902&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500)",markdownRender:new MarkdownIt({html:true,linkify: true,typographer: true}).use(MarkdownItAbbr).use(MarkdownItAnchor).use(MarkdownItFootnote).use(MarkdownItHighlightjs).use(MarkdownItSub).use(MarkdownItSup).use(MarkdownItTasklists).use(MarkdownItTOC)}
},methods:{renderMdText(text){return this.markdownRender.render(text)}
}
}
</script><style lang="less" scoped>
.mdTextBox{width: 1400px;/deep/ h1{font-size: 24px;line-height: 48px;font-weight: 800;}/deep/ h2{font-size: 22px;line-height: 42px;font-weight: 700;}/deep/ h3{font-size: 20px;line-height: 36px;font-weight: 600;}/deep/ img{width: 500px;}/deep/ a{color: #335fee;line-height: 20px;}/deep/ p  {line-height: 20px;}
}
</style>
效果

相关文章:

  • 在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本
  • 全数仓体系建设规范V4.0
  • 中国出海企业“奔赴”俄罗斯蓝海 有哪些认知需要对齐? | TopOn变现干货
  • AI数字人本地算力直播怎么做?青否数字人教您快速搭建直播间!
  • 2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷7(私有云)
  • 构建高可用微服务:SpringCloud Alibaba解决方案揭秘
  • C# —— List数组
  • HTML跨年烟花
  • Flutter基础 -- Flutter布局练习(小项目)
  • python-doipclient 源文档翻译
  • 在编程Python的时候发生ModuleNotFoundError: No module named distutils报错怎么办
  • 07_查找
  • Crosslink-NX器件应用连载(9): USB3.0相机
  • 私有云和多云管理平台 | Cloudpods v3.11.4 正式发布
  • CSS学习笔记之高级教程(五)
  • Angular 2 DI - IoC DI - 1
  • CAP理论的例子讲解
  • CentOS7简单部署NFS
  • ERLANG 网工修炼笔记 ---- UDP
  • ES6系列(二)变量的解构赋值
  • learning koa2.x
  • MySQL的数据类型
  • 当SetTimeout遇到了字符串
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 服务器从安装到部署全过程(二)
  • 关于使用markdown的方法(引自CSDN教程)
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 前端面试之闭包
  • 软件开发学习的5大技巧,你知道吗?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 为什么要用IPython/Jupyter?
  • 移动端唤起键盘时取消position:fixed定位
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • !$boo在php中什么意思,php前戏
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #传输# #传输数据判断#
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (pojstep1.1.2)2654(直叙式模拟)
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (六)激光线扫描-三维重建
  • (一)基于IDEA的JAVA基础1
  • (一)认识微服务
  • (正则)提取页面里的img标签
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转载)跟我一起学习VIM - The Life Changing Editor