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, 使用智能排版,如:"--"转换为"---","---"转换为"---","..."转换为"..."
相关推荐
蒜香拿铁11 分钟前
Angular【基础语法】
前端·javascript·angular.js
xiaoxiao无脸男31 分钟前
纯css:一个好玩的按钮边框动态动画
前端·css·css3
rookie_fly1 小时前
基于Vue的数字输入框指令
前端·vue.js·设计模式
元直数字电路验证1 小时前
ASP.NET Core Web APP(MVC)开发中无法全局配置 NuGet 包,该怎么解?
前端·javascript·ui·docker·asp.net·.net
rexling12 小时前
【Spring Boot】Spring Boot解决循环依赖
java·前端·spring boot
我有一棵树2 小时前
Vue 项目中全局样式的正确写法:不要把字体和主题写在 #app 上
前端·javascript·vue.js
Luna-player2 小时前
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本,解决方法
前端·npm·node.js
悢七2 小时前
windows npm打包无问题,但linux npm打包后部分样式缺失
linux·前端·npm
Felicity_Gao3 小时前
uni-app App升级功能实现
前端·学习·uni-app
CS Beginner3 小时前
【搭建】个人博客网站的搭建
java·前端·学习·servlet·log4j·mybatis