Vue项目markdown内容预览显示优化方式

 更新时间:2025年10月25日 10:07:46   作者:Qredsun  
在Vue项目中使用markdown-it组件预览Markdown内容时,通过安装pnpm和markdown-it-github-markdown-css依赖,并重写markdown部分样式,实现了Markdown内容的美化,在MarkdownPreview.vue组件中,通过变量renderedMarkdown接收并渲染Markdown内容

背景

Vue项目中需要对markdown内容进行预览,使用markdown-it组件实现功能后,发现样式比较丑,需要进行优化一下

实现

安装依赖

pnpm add markdown-it github-markdown-css

重写markdown的部分样式。

  • MarkdownPreview.vue
<template>
  <div v-html="renderedHtml" class="markdown-body"></div>
</template>

<script setup lang="ts">
import { ref, watch } from 'vue'
import MarkdownIt from 'markdown-it'

interface Props {
  content: string;
}

const props = defineProps<Props>()

// 初始化 markdown-it 实例
const md = new MarkdownIt({
  html: true,    // 允许 HTML 标签
  breaks: true,  // 支持换行
  linkify: true  // 自动识别链接
})

const renderedHtml = ref('')

// 监听 content 变化,重新渲染 markdown
watch(
  () => props.content,
  (newContent) => {
    renderedHtml.value = md.render(newContent)
  },
  { immediate: true }
)
</script>

<style>
@import "github-markdown-css/github-markdown-light.css";

.markdown-body {
  padding: 20px;
  line-height: 1.7;
  font-size: 14px;
}

.markdown-body ul,
.markdown-body ol {
  margin-left: 1.2em;
  margin-bottom: 1em;
}

.markdown-body li {
  margin-bottom: 0.4em;
}

.markdown-body table {
  border-collapse: collapse;
  width: 100%;
}

.markdown-body table,
.markdown-body th,
.markdown-body td {
  border: 1px solid #d0d7de;
  padding: 8px;
}

.markdown-body th {
  background-color: #f6f8fa;
}
</style>


其他模块进行引用

变量 renderedMarkdown 是stirng类型的Markdown内容

<MarkdownPreview :content="renderedMarkdown" />

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • npm run serve运行vue项目时报错:Error: error:0308010C:digital envelope routines::unsupported的解决方法

    npm run serve运行vue项目时报错:Error: error:0308010C

    这篇文章主要介绍了npm run serve运行vue项目时,出现报错:Error: error:0308010C:digital envelope routines::unsupported的解决方法,文中有详细的解决方法,需要的朋友可以参考下
    2024-04-04
  • Vue生命周期activated之返回上一页不重新请求数据操作

    Vue生命周期activated之返回上一页不重新请求数据操作

    这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue3使用reactive包裹数组正确赋值问题

    vue3使用reactive包裹数组正确赋值问题

    这篇文章主要介绍了vue3使用reactive包裹数组正确赋值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Vue+mui实现图片的本地缓存示例代码

    Vue+mui实现图片的本地缓存示例代码

    这篇文章主要介绍了Vue+mui实现图片的本地缓存的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • vue指令防止按钮连点解析

    vue指令防止按钮连点解析

    这篇文章主要介绍了vue指令防止按钮连点解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue3的动态组件使用场景与示例

    Vue3的动态组件使用场景与示例

    在 Vue 中,组件是构建用户界面的基础,而动态组件的引入,更是让开发者能够在应用中实现灵活、可重用的视图逻辑,本文将探讨 Vue 3 中的动态组件,分享其使用场景,并通过示例代码来说明其操作方法,需要的朋友可以参考下
    2025-01-01
  • vue之数据交互实例代码

    vue之数据交互实例代码

    本篇文章主要介绍了vue之数据交互实例代码,vue中也存在像ajax和jsonp的数据交互,实现向服务器获取数据,有兴趣的可以了解一下
    2017-06-06
  • 1分钟Vue实现右键菜单

    1分钟Vue实现右键菜单

    今天给大家分享的是,如何在最短的时候内实现右键菜单。高效实现需求,避免重复造轮子。感兴趣的可以了解一下
    2021-10-10
  • 在 Vue 中控制表单输入方法详解

    在 Vue 中控制表单输入方法详解

    这篇文章主要介绍了在 Vue 中控制表单输入方法详解的相关资料,需要的朋友可以参考下
    2023-04-04
  • vue用FileSaverJs导出文件

    vue用FileSaverJs导出文件

    FileSaver.js 是在客户端保存文件的解决方案,非常适合 在客户端上生成文件的 Web 应用,它是 HTML5 版本的 saveAs() FileSaver 实现,这篇文章主要介绍了vue用FileSaverJs导出文件,需要的朋友可以参考下
    2023-09-09

最新评论