当前位置:首页 > 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 组件中使用:

vue实现markdown

<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

在组件中使用:

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 实现代码高亮:

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 实现截图的方法 使用 html2canvas 库 安装 html2canvas 库: npm install html2canvas 在 Vue 组件中使用: import html2ca…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue实现看板

vue实现看板

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

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

vue cli 实现

vue cli 实现

Vue CLI 实现步骤 安装 Vue CLI 确保 Node.js 版本在 8.9 或以上。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 创建新项目…

vue实现京东

vue实现京东

Vue 实现京东电商网站的关键步骤 项目搭建与基础配置 使用 Vue CLI 或 Vite 初始化项目,安装 Vue Router 管理路由,Vuex/Pinia 管理状态。配置基础 UI 框架如 E…