当前位置:首页 > VUE

vue实现md编辑展示

2026-01-22 22:50:54VUE

Vue 实现 Markdown 编辑与展示

安装依赖

在 Vue 项目中安装 markedhighlight.js,用于解析 Markdown 语法和高亮代码:

npm install marked highlight.js

创建 Markdown 编辑器组件

通过 textarea 或富文本编辑器库(如 Vditor)实现编辑功能:

<template>
  <div class="markdown-container">
    <textarea v-model="markdownText" placeholder="输入 Markdown 内容"></textarea>
    <div class="preview" v-html="compiledMarkdown"></div>
  </div>
</template>

<script>
import marked from 'marked';
import hljs from 'highlight.js';
import 'highlight.js/styles/github.css';

export default {
  data() {
    return {
      markdownText: ''
    };
  },
  computed: {
    compiledMarkdown() {
      marked.setOptions({
        highlight: (code) => hljs.highlightAuto(code).value
      });
      return marked(this.markdownText);
    }
  }
};
</script>

<style>
.markdown-container {
  display: flex;
  gap: 20px;
}
textarea {
  width: 50%;
  min-height: 300px;
}
.preview {
  width: 50%;
  border: 1px solid #ddd;
  padding: 10px;
}
</style>

使用第三方库增强功能

若需更强大的编辑功能(如实时预览、工具栏),可使用以下库:

  • Vditor: 支持流程图、数学公式等高级功能。
    npm install vditor

    示例代码:

    
    <template>
    <div id="editor"></div>
    </template>
import Vditor from 'vditor'; export default { mounted() { new Vditor('editor', { after: () => { console.log('编辑器加载完成'); } }); } }; ```

安全注意事项

使用 v-html 渲染 Markdown 时需防范 XSS 攻击。可通过 DOMPurify 清理内容:

npm install dompurify

修改计算属性:

compiledMarkdown() {
  marked.setOptions({ sanitize: true });
  return marked(this.markdownText);
}

自定义 Markdown 样式

通过 CSS 覆盖默认样式,例如标题、列表等:

.preview h1 {
  font-size: 2em;
  border-bottom: 1px solid #eee;
}
.preview pre {
  background-color: #f6f8fa;
  padding: 12px;
  border-radius: 3px;
}

服务端渲染支持

若需 SSR(如 Nuxt.js),需动态导入 marked

vue实现md编辑展示

const marked = process.client ? require('marked') : null;

标签: 编辑vue
分享给朋友:

相关文章

vue实现frame

vue实现frame

Vue 中实现 iframe 的方法 在 Vue 中可以通过直接使用 <iframe> 标签或动态绑定 src 属性来实现 iframe 功能。 基本用法 <template&g…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue实现注册

vue实现注册

Vue 实现注册功能 注册功能通常涉及前端表单、数据验证、与后端 API 的交互等步骤。以下是一个完整的 Vue 实现注册功能的方案。 创建注册表单 使用 Vue 的模板语法创建注册表单,包含用户名…

vue实现 弹窗

vue实现 弹窗

Vue 实现弹窗的基本方法 使用 Vue 实现弹窗可以通过多种方式,包括组件化、指令、插件等。以下是几种常见的实现方法。 组件化实现弹窗 创建一个独立的弹窗组件,通过 props 控制显示与隐藏。…

vue实现插件

vue实现插件

Vue 插件实现方法 Vue 插件通常用于为 Vue 应用添加全局功能或共享功能。以下是实现 Vue 插件的核心步骤: 插件基本结构 Vue 插件需要暴露一个 install 方法,该方法接收 Vu…

vue实现加载

vue实现加载

Vue 实现加载功能的方法 使用 v-if 或 v-show 控制加载状态 通过数据绑定控制加载动画的显示与隐藏。v-if 会完全移除 DOM 元素,v-show 只是切换 display 属性。…