vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用

news/2024/7/9 23:36:26 标签: 编辑器, vue, markdown
markdown_views prism-atom-one-light">

vue3 v-md-editor markdown编辑器和预览组件的使用

  • 概述
  • 安装支持vue3版本
  • 使用
  • 例子
    • 效果
    • 代码部分
  • 完整代码

概述

v-md-editor 是基于 Vue 开发的 markdown 编辑器组件

  1. 轻量版编辑器
    轻量版编辑器左侧编辑区域使用 textarea 实现。
    优点:足够轻量
    缺点:不支持更为丰富的编辑区功能扩展。例如:无法根据不同的语法在输入框内显示不同的样式。
  2. 进阶版编辑器
    进阶版编辑器左侧编辑区域使用 CodeMirror (opens new window)实现。
    优点:可以根据 CodeMirror 提供的 Api 来自定义扩展编辑区域功能,提高编辑体验。
    缺点:文件体积远大于轻量版
  3. 预览组件
    当你只需要对 markdown 语法进行解析并预览的时候,可以使用该组件。
  4. html 预览组件
    当你只需要对保存后的 html 文本进行预览的时候,可以使用该组件。
  5. 特性
    高度可定制化,高度可扩展性,支持自定义主题包,提供开箱即用的主题包,提供多个组件。可按需使用。

vue3_19">安装支持vue3版本

# 使用 npm
npm i @kangc/v-md-editor@next -S

# 使用 yarn
yarn add @kangc/v-md-editor@next

使用

markdown_VMdEditor_31">1.使用markdown编辑器 VMdEditor

首先在项目的main.js中进行挂载,然后再去页面中使用

import { createApp } from 'vue';
import VMdEditor from '@kangc/v-md-editor';
import '@kangc/v-md-editor/lib/style/base-editor.css';
import githubTheme from '@kangc/v-md-editor/lib/theme/github.js';
import '@kangc/v-md-editor/lib/theme/style/github.css';

// highlightjs
import hljs from 'highlight.js';

VMdEditor.use(githubTheme, {
  Hljs: hljs,
});

const app = createApp(/*...*/);

app.use(VMdEditor);

页面使用

<template>
  <v-md-editor v-model="text" height="400px"></v-md-editor>
</template>

<script setup>
  import {ref} from 'vue'
  const text = ref("")
</script>

markdown_VMdPreview_62">2.markdown文本格式前端渲染 VMdPreview

import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css'

VMdPreview.use(githubTheme, {
  Hljs: hljs,
});

const app = createApp(/*...*/);

app.use(VMdPreview);
<template>
  <v-md-preview :text="content"></v-md-preview>
</template>
<script setup>
  import {ref} from 'vue'
  const content =ref() 
</script>

例子

效果

  1. markdown 编辑器界面
    在这里插入图片描述

  2. markdown 预览界面

在这里插入图片描述

代码部分

  1. main.js
import './assets/main.css'

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

// markdown编辑器
import VMdEditor from '@kangc/v-md-editor';
import '@kangc/v-md-editor/lib/style/base-editor.css';
import githubTheme from '@kangc/v-md-editor/lib/theme/github.js';
import '@kangc/v-md-editor/lib/theme/style/github.css';
import hljs from 'highlight.js'; // highlightjs

VMdEditor.use(githubTheme, {
    Hljs: hljs,
});
  


// markdown 预览 markdown解析需要的配置项目
import VMdPreview from '@kangc/v-md-editor/lib/preview';
// import '@kangc/v-md-editor/lib/style/preview.css'
// import githubTheme from '@kangc/v-md-editor/lib/theme/github';
import '@kangc/v-md-editor/lib/theme/style/github.css';
// import hljs from 'highlight.js';

VMdPreview.use(githubTheme, {
  Hljs: hljs,
});

const app = createApp(App)

app.use(router)
app.use(VMdEditor)
app.use(VMdPreview)
app.mount('#app')
  1. MarkdownEdit.vue
<script setup>
import { ref } from 'vue'
import { RouterLink } from 'vue-router'
const text = ref("")
</script>

<template>
  <main>
   <div style="width:80vw;">
    <h3>markdown编辑器</h3> <RouterLink to="/read">markdown预览测试</RouterLink>
    <v-md-editor v-model="text" height="700px" ></v-md-editor>
   </div>
  </main>
</template>

  1. MarkdownRead.vue
<script setup>
import { ref } from 'vue'

const contentA = ref() 
const readText = ()=>{
  // 请求的是我自己的接口地址,后端代码逻辑就是存到数据库中的一个text文件,然后下面完整的代码中,我提供了我的markdown文本
  fetch('http://robin.com/Article/18')  
    .then(response => response.text())  
    .then(data => {
      contentA.value = JSON.parse(data).content
      //console.log(contentA.value)
    })  
    .catch((error) => console.error('Error:', error));
}
readText()
</script>

<template>
  <div class="about">
    <div>
      <v-md-preview :text="contentA"></v-md-preview>
    </div>
  </div>
</template>

<style>
@media (min-width: 1024px) {
  .about {
    min-height: 100vh;
    min-width: 1024px;
    margin: 0 auto;
    display: flex;
    align-items: center;
  }
}
</style>



完整代码

链接: https://pan.baidu.com/s/1kzCxIt-oXdsKCKgBW91gOQ 提取码: zk3w 复制这段内容后打开百度网盘手机App,操作更方便哦


http://www.niftyadmin.cn/n/5096310.html

相关文章

实验笔记之——可见光通信调制驱动芯片模组

本博文记录本团队研发出的VLC驱动调制芯片模组&#xff08;如下图所示&#xff09;的驱动调制代码烧录过程。 实物模组正面 实物模组反面 首先需要安装keil5&#xff0c;其安装与编译过程请参考博客&#xff1a;实验笔记之——单片机烧录的实验过程_烧录程序的基本步骤-CSDN博客…

QCC51XX-QCC30XX系列开发教程(实战篇) 之 12.1-空间音频相关模块的概述

查看全部教程开发请点击:全网最全-QCC51xx-QCC30xx(TWS)系列从入门到精通开发教程汇总(持续更新中) ==================================================================== 版权归作者所有,未经允许,请勿转载。 ==========================================

Spring framework Day18:Spring AOP xml配置示例一

前言 Spring AOP&#xff08;面向切面编程&#xff09;是Spring框架中的一个重要特性&#xff0c;它通过在运行时动态地将额外的逻辑织入到应用程序中&#xff0c;从而实现对横切关注点的解耦和复用。在Spring AOP中&#xff0c;我们可以通过XML配置文件来定义切面和增强逻辑&…

【定时开关机】windows 10 如何设置定时开关机

一、需求 二、场景 三、思路 四、实现 A. 设置来电开机 B. 设置及定时关机 一、需求 需要一台 win 10 的电脑在工作时间内自动开关机&#xff08;早 8:30 - 晚&#xff1a;6:05&#xff09; 二、场景 开机&#xff1a;早 8:30 关机&#xff1a;晚 6:05 三、思路 【开机…

全局平均池化 - 从特征图到全局信息

目录 引言全局平均池化的概念实现全局平均池化全局平均池化的优点结论代码示例 1. 引言 卷积神经网络的池化层是提取特征的重要组成部分。其中&#xff0c;全局平均池化是一种简洁而有效的方法&#xff0c;可以将整个特征图的信息进行汇聚。本博客将介绍全局平均池化的概念、…

github 终端克隆操作,以及对 https/ssh 的理解

前言 最近瞎搞 github 的一些配置&#xff0c;结果搞得有一段时间克隆不了仓库。不过经历了这次风波后&#xff0c;我对 github 的一些原理有了更清楚的了解。所以想稍微写一小篇文章总结输出一下&#xff0c;也欢迎有疑问的读者与博主进一步交流&#xff0c;我的理解还是有限…

Flink SQL 时区 -- 时间字符串转时间戳并转换时区

文章目录 一、数据需求&#xff1a;二、探索路程1、UNIX_TIMESTAMP CONVERT_TZ2、UNIX_TIMESTAMP 三、解决方案TIMESTAMPADD TO_TIMESTAMP 一、数据需求&#xff1a; 将时间字符串格式化&#xff0c;转变成时间戳&#xff0c;再加8小时后写入clickhouse 2023-10-17T03:00:4…

利用Python turtle绘制中国结附源码

一、中国结 01 平安喜乐 1&#xff09;效果图 import turtle turtle.screensize(600,800) turtle.pensize(10) turtle.pencolor("red") turtle.seth(-45) turtle.fd(102) turtle.circle(-6,180) turtle.fd(102) turtle.circle(6,180) turtle.fd(102) turtle.circle(…