vue2项目中使用markdown-it插件教程,同时解决代码块和较长单词不换行问题

安装及使用markdown-it插件

  1. 安装markdown-it插件 npm install markdown-it --save
  2. markdown-it官网
  3. 需要使用时首先在页面中引入markdown-it插件,然后computed根据数据生成markdownItContent,使用v-html指令渲染内容即可 注意:v-html可能会出现XSS攻击,可以设置sanitizer为true避免,默认为false,具体可查看markdown-it官网 代码示例
js 复制代码
<template>
    <div class="markdown-it-preview" v-html="markdownItContent">
    </div>
</template>

<script>
import MarkdownIt from 'markdown-it'
export default{
    name: 'markdown-it-preview',
    data(){
        return {
            markdownItContent: '**helloworld**'
        }
    },
    computed: {
        markdownItContent(){
            const md = new MarkdownIt({
                breaks: true // 转换换行符为<br>,更多配置可查看官网
            })
            return md.render(this.markdownItContent)
        }
    }
}
</script>

可能遇到的问题

  1. markdown-it中渲染代码块时,转换为code标签,导致内部段落不会自动换行,不分段会导致撑开宽度,设置white-space:normal即可
  2. markdown-it组件中,如果输入较长的单词,不会自动换行,导致宽度撑开;结合::v-deep和*选择器,在markdown-it组件内设置word-break: break-all 和 overflow-wrap: break-word
css 复制代码
::v-deep .markdown-it-preview *{
    word-break: break-all;
    overflow-wrap: break-word;
    white-space: normal;
}

markdown-it常用配置

  1. breaks: true,转换换行符为
  2. html: true,允许渲染html标签
  3. linkify: true,自动识别网址并转换为链接
  4. typographer: true,使用一些语言特定的排版规则,如:"--"转换为"---","---"转换为"---","..."转换为"..."
  5. xhtmlOut: true,使用xhtml语法,如:"<br />","<hr />","<img src='test.jpg' />"
  6. langPrefix: 'language-', 设置代码块的class前缀,默认为hljs,如:<pre><code class="language-javascript">...</code></pre>
  7. highlight: function(str, lang) {}
  8. quotes: '""''', 设置引号类型,默认为""'',如:""''
  9. smartquotes: true, 使用智能引号,如:"Hello"转换为"Hello"
  10. smartypants: true, 使用智能排版,如:"--"转换为"---","---"转换为"---","..."转换为"..."
相关推荐
李剑一10 小时前
uni-app实现本地MQTT连接
前端·trae
EndingCoder10 小时前
Any、Unknown 和 Void:特殊类型的用法
前端·javascript·typescript
oden10 小时前
代码高亮、数学公式、流程图... Astro 博客进阶全指南
前端
GIS之路11 小时前
GDAL 实现空间分析
前端
JosieBook11 小时前
【Vue】09 Vue技术——JavaScript 数据代理的实现与应用
前端·javascript·vue.js
pusheng202511 小时前
算力时代的隐形防线:数据中心氢气安全挑战与技术突破
前端·安全
起名时在学Aiifox11 小时前
前端文件下载功能深度解析:从基础实现到企业级方案
前端·vue.js·typescript
2501_9418779812 小时前
从配置热更新到运行时自适应的互联网工程语法演进与多语言实践随笔分享
开发语言·前端·python
云上凯歌12 小时前
01 ruoyi-vue-pro框架架构剖析
前端·vue.js·架构