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

news2024/11/24 7:47:52

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

  • 概述
  • 安装支持vue3版本
  • 使用
    • 1.使用markdown编辑器 VMdEditor
    • 2.markdown文本格式前端渲染 VMdPreview
  • 例子
    • 效果
    • 代码部分
  • 完整代码

概述

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

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

安装支持vue3版本

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

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

使用

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>

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.coloradmin.cn/o/1100656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧党建小程序源码系统+在线答题考试二合一 带完整的搭建教程

大家好&#xff0c;今天来给大家分享一个智慧党建小程序源码系统。以下是部分核心代码图&#xff1a; 系统特色功能一览&#xff1a; 积分体系&#xff1a;党员可以通过完成各种党建活动&#xff0c;如学习党的理论知识、参加组织生活、开展志愿服务等获得积分&#xff0c;积分…

【JVM】synchronized与锁升级

文章目录 1. synchronized锁优化背景2. synchronized锁性能优化过程2.1 java5以前2.2 monitor锁2.3 java6开始 3. 无锁4. 偏向锁4.1 背景4.2 理论落地4.3 技术实现4.4 偏向锁的撤销4.5 题外话 5. 轻量级锁5.1 轻量级锁的加锁5.2 轻量级锁的释放5.3 锁升级 6. 重量级锁7. 锁升级…

本地安装telepresence,访问K8S集群 Mac(m1) 非管理員

kubeconfig 一&#xff0e;安装telepresence 1.安装 Telepresence Quickstart | Telepresence &#xff08;1&#xff09;brew install datawire/blackbird/telepresence 2.配置 目录kubectl 将使用默认的 kubeconfig 文件&#xff1a;$HOME/.kube/config 创建文件夹&…

集成电路CD40161-多功能计数器和分频器的重要性 | 百能云芯

在电子电路和数字系统设计中&#xff0c;CD40161是一款常用的集成电路&#xff08;IC&#xff09;元件。它是一个多功能的计数器和分频器&#xff0c;具有广泛的应用领域。云芯将带您深入解释CD40161的功能、特点、应用以及未来前景&#xff0c;帮助您更好地了解这一电子元件。…

小程序开发平台源码系统+全功能小程序商城功能 带前后端完整搭建教程

今天来给大家介绍一下小程序开发平台源码系统的全功能小程序商城功能。全功能小程序商城是一种基于微信平台开发的电子商务应用&#xff0c;它通过小程序商城为商家提供了一站式电子商务解决方案&#xff0c;帮助商家实现线上购物的便利。下面是部分核心代码图&#xff1a; 系统…

玩转代码| Vue 中 JSX 的特性,这一篇讲的明明白白

目录 什么时候使用JSX JSX在Vue2中的基本使用 配置 文本插值 条件与循环渲染 属性绑定 事件绑定 v-show与v-model 插槽 使用自定义组件 在method里返回JSX JSX是一种Javascript的语法扩展&#xff0c;即具备了Javascript的全部功能&#xff0c;同时又兼具html的语义…

八、单臂路由实验

拓扑图&#xff1a; 单臂路由的特点&#xff0c;基于VLAN实现在一个路由器同一个端口下&#xff0c;不同网段相互通讯 首先对各个PC机ip配置完毕 进入SW1&#xff0c;首先创建vlan 10 20 进入2 3口配置access分别允许10 20通过&#xff0c;进入1 4口配置trunk允许10和20通过 …

小程序开发平台源码系统——美容美发行业小程序功能 带完整搭建教程

今天来给大家介绍一下小程序开发平台其中的美容美发行业小程序开发的功能。在我们现在的日常生活中&#xff0c;美容美发行业都无处不在&#xff0c;而创建一个小程序可以帮助美容美发店更好地进行营销推广。通过在小程序中发布优惠活动、打折信息等&#xff0c;可以吸引更多的…

SAP ME21N\ME22N\ME23N采购订单增强:抬头、行项目取值处理

采购订单增强&#xff1a;ME_PROCESS_PO_CUST 抬头&#xff1a; HEADERDATA: ls_mepoheader TYPE mepoheader.ls_mepoheader im_header->get_data( ). 行项目&#xff1a; ITEMDATA: ls_mepoitem TYPE mepoitem,ls_customer TYPE mepo_badi_exampl,ls_tbsg TYPE tb…

yolov8训练自定义目标检测模型

本文使用Ultralytics的python API进行模型训练&#xff0c;适用于yolov8小白入门&#xff0c;大佬请忽略本文 笔者也是昨天开始学习的小白&#xff0c;如有错误希望多多指正 目录 准备数据集 python安装yolov8 配置yaml 从0开始训练 从预训练模型开始训练 准备数据集 …

Matlab论文插图绘制模板第120期—分组气泡云图

​在之前的文章中&#xff0c;分享了Matlab气泡云图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下分组气泡云图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需要的朋友可以关注…

【Vue】vue在Windows平台IIS的部署

系列文章 【C#】IIS平台下&#xff0c;WebAPI发布及异常处理 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126539836 【Vue】vue2与WebApi跨域CORS问题 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/133808959 文章目…

新闻发稿多少钱一篇?轻松发布新闻一站式发稿服务平台

随着互联网的发展&#xff0c;新闻发布成为企业和个人宣传推广的重要手段之一。而在选择新闻发稿平台时&#xff0c;费用是一个关键因素。对于很多人而言&#xff0c;关心的问题是&#xff1a;新闻发稿多少钱一篇&#xff1f;是否有平价的选择&#xff1f;在这个方面&#xff0…

前端开发中的try...catch

首先try...catch 结构可以用来处理 Promise 中的异常。在 JavaScript 中&#xff0c;Promise 提供了一种处理异步操作的机制&#xff0c;并且可以通过 .catch() 方法捕获并处理异步操作中抛出的异常。 async function someAsyncFunction() {try {const result await someProm…

LPWAN产业何时才能真正爆发?

导读&#xff1a; 虽然LPWAN目前还有重重困难&#xff0c;但是我们有充分的理由相信LPWAN即将爆发的趋势不变&#xff0c;当然&#xff0c;因为LPWAN是一个技术流派繁多的市场&#xff0c;除了LoRa、NB-IOT、eMTC还有RPMA、ZETA等等众多的技术流派&#xff0c;对于应用企业而言…

01【Git的基本使用与底层命令】

下一篇&#xff1a;02【Git的分支与数据恢复】 目录&#xff1a;【Git系列教程-目录大纲】 文章目录 一、Git概述1.1 Git简介1.2 集中式与分布式1.2.1 集中式版本控制1.2.2 分布式版本控制 1.3 Git的使用流程1.3.1 本地仓库1.3.2 协同开发 1.4 Git的配置1.4.1 Git的配置等级1…

Java——List接口

1.Java单列集合类&#xff08;Collection&#xff09;概述 Java中的集合类就像一个容器&#xff0c;专门用来存储Java类的对象。 数组可以用来保存对个对象&#xff0c;但有时无法事先确定需要保存对象的个数&#xff0c;此时数组便不再使用&#xff0c;因为数组的长度不可变…

小黑怀柔证书下来,腿部酸痛也得到了缓解,跟跑团里的毛毛一起遛龙潭中湖公园,过两天要走闭幕式的leetode之旅的leetcode之旅:18. 四数之和

小黑代码(小黑独立做出来) class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:# 数组长度n len(nums)if n < 4:return []# 排序nums.sort()def three_sum(target_, start, end):if end - start < 2:return []# 结果数组res []fo…

如何申请免费的DV SSL证书

SSL&#xff08;Secure Sockets Layer&#xff09;证书是保护网站和用户数据安全的重要组成部分。DV&#xff08;Domain Validation&#xff09; SSL证书是最简单的一种&#xff0c;通常用于验证域名的拥有权。虽然市面上有许多商业SSL证书&#xff0c;但您也可以轻松获得免费的…

IP地址为什么需要SSL证书

随着互联网的发展&#xff0c;越来越多的企业和个人开始使用IP地址进行网站访问。然而&#xff0c;明文传输的IP地址很容易被黑客截取&#xff0c;从而导致数据泄露和网络安全问题。因此&#xff0c;为了保护IP地址的数据传输安全&#xff0c;企业需要使用IP地址证书。 点击申请…