当前位置:首页 > VUE

vue实现markdown

2026-02-10 03:11:44VUE

Vue 实现 Markdown 编辑器

在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或手动解析 Markdown 语法来完成。以下是几种常见方法:

使用第三方库(如 marked 或 markdown-it)

安装 marked 或 markdown-it 库:

npm install marked
# 或
npm install markdown-it

在 Vue 组件中使用:

<template>
  <div>
    <textarea v-model="markdownText" @input="updateMarkdown"></textarea>
    <div v-html="compiledMarkdown"></div>
  </div>
</template>

<script>
import { marked } from 'marked';

export default {
  data() {
    return {
      markdownText: '',
      compiledMarkdown: ''
    };
  },
  methods: {
    updateMarkdown() {
      this.compiledMarkdown = marked(this.markdownText);
    }
  }
};
</script>

使用 Vue-Markdown 插件

安装 vue-markdown 插件:

npm install vue-markdown

在组件中使用:

<template>
  <div>
    <textarea v-model="markdownText"></textarea>
    <vue-markdown :source="markdownText"></vue-markdown>
  </div>
</template>

<script>
import VueMarkdown from 'vue-markdown';

export default {
  components: {
    VueMarkdown
  },
  data() {
    return {
      markdownText: ''
    };
  }
};
</script>

自定义 Markdown 解析

如果需要更灵活的控制,可以手动解析 Markdown:

<template>
  <div>
    <textarea v-model="markdownText" @input="parseMarkdown"></textarea>
    <div v-html="parsedHtml"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      markdownText: '',
      parsedHtml: ''
    };
  },
  methods: {
    parseMarkdown() {
      // 简单替换示例
      this.parsedHtml = this.markdownText
        .replace(/^# (.*$)/gm, '<h1>$1</h1>')
        .replace(/^## (.*$)/gm, '<h2>$1</h2>')
        .replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
    }
  }
};
</script>

添加语法高亮

结合 highlight.js 实现代码高亮:

vue实现markdown

import hljs from 'highlight.js';
import 'highlight.js/styles/github.css';

marked.setOptions({
  highlight: function(code, lang) {
    if (lang && hljs.getLanguage(lang)) {
      return hljs.highlight(lang, code).value;
    }
    return hljs.highlightAuto(code).value;
  }
});

注意事项

  • 使用 v-html 时需注意 XSS 攻击风险,确保内容可信或进行过滤
  • 复杂 Markdown 功能(如表格、流程图)建议使用成熟库
  • 对于大型项目,考虑将 Markdown 解析逻辑封装为独立组件

以上方法可根据项目需求选择,第三方库方案适合快速实现,自定义解析则提供更高灵活性。

标签: vuemarkdown
分享给朋友:

相关文章

vue实现水印

vue实现水印

Vue 实现水印的方法 使用 CSS 背景图 通过 CSS 的 background-image 和 background-repeat 属性实现水印效果。创建一个包含水印文本的 Canvas,将其转…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常涉及项目初始化、页面结构设计、路由配置和组件开发。以下是具体实现方法: 初始化Vue项目 使用Vue CLI或Vite快速搭建项目结构: npm i…

vue实现答题

vue实现答题

Vue 实现答题功能 数据结构设计 使用 Vue 的响应式特性管理题目和答案数据。通常需要以下数据结构: data() { return { questions: [ {…

vue拼图实现

vue拼图实现

实现 Vue 拼图游戏的方法 使用 Vue 组件和动态数据绑定 创建一个 Vue 组件来管理拼图的状态和逻辑。通过 v-for 动态渲染拼图块,利用 v-bind 绑定样式和位置。拼图块的数据可以存储…

vue简单实现

vue简单实现

Vue 简单实现示例 以下是一个使用 Vue.js 创建简单应用的示例,涵盖基本功能如数据绑定、事件处理和组件化。 基础 HTML 结构 <!DOCTYPE html> <ht…

vue如何实现mvvm

vue如何实现mvvm

Vue 实现 MVVM 的核心机制 Vue 的 MVVM(Model-View-ViewModel)实现依赖于数据绑定和响应式系统,通过以下核心机制完成: 数据劫持(响应式系统) Vue 使用 Ob…