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, 使用智能排版,如:"--"转换为"---","---"转换为"---","..."转换为"..."
相关推荐
浮生望44 分钟前
React 受控与非受控组件:从表单状态管理到实时校验的完整实践
前端
糖墨夕2 小时前
第二章:AI Agent 到底是个啥?—— 用生活场景把概念讲明白
前端
Csvn2 小时前
⚡ content-visibility: auto —— 长页面渲染提速的隐藏神器,白捡的性能优化
前端
用户938515635072 小时前
深入理解 Next.js:从 SPA 的 SEO 问题到约定式路由与 SSR 原理
前端·后端·全栈
snow@li2 小时前
web:前端500知识点/速查手册
前端
kyriewen4 小时前
今年裁了16万技术人——但字节前端岗反而涨了23%
前端·javascript·面试
用户059540174464 小时前
把 AI Agent 记忆存储验证从 40 分钟手测压到 3 分钟,pytest + Docker 这套组合太顶了
前端·css
stereohomology4 小时前
MS Edge很多事的一点是把地址栏复制的地址自动转标题文本
前端·edge
imaol14 小时前
链表 -- 环链表
java·前端·链表
imaol15 小时前
链表 -- 双向链表
java·前端·链表