vue3中使用cherry-markDown步骤
附cherry-markDown官网及api使用示例
官网:GitHub - Tencent/cherry-markdown: ✨ A Markdown Editor
api:Cherry Markdown API
考虑到复用性,我在插件的基础上做了二次封装,步骤如下:
1.下载 npm install cherry-markdown --save
2..先在html中定义一个markDown容器,设置id及样式
<template><div v-loading="loading" element-loading-text="文件上传中..."><div @click.prevent.stop><div :id="mdId" :style="{ height: height + 'px' }"></div></div></div>
</template>
3.在js中引入markDown
import Cherry from "cherry-markdown";
import "cherry-markdown/dist/cherry-markdown.min.css";
4.定义需要使用的变量并初始化markDown
(一部分是从父组件传过来的,loading是在上传图片/视频/附件的时候使用)
const props = defineProps({height: {type: Number,default: 600,},modelValue: {type: String,default: "",},knwlgId: {type: String,default: "",},mdId: {type: String,default: "markdown-container",},
});
const emits = defineEmits(["update:modelValue", "setHtml"]);
const cherrInstance = ref(null);
const loading = ref(false);onMounted(() => {//初始化markDowninitCherryMD();
});
5.初始化markDown
toolbars.toolbar内的togglePreview就是预览按钮
设置默认模式:editor.defaultModel
// defaultModel 编辑器初始化后的默认模式,一共有三种模式:1、双栏编辑预览模式;2、纯编辑模式;3、预览模式
// edit&preview: 双栏编辑预览模式
// editOnly: 纯编辑模式(没有预览,可通过toolbar切换成双栏或预览模式)
// previewOnly: 预览模式(没有编辑框,toolbar只显示“返回编辑”按钮,可通过toolbar切换成编辑模式)
// defaultModel: 'edit&preview',
const initCherryMD = (value, config) => {cherrInstance.value = new Cherry({id: props.mdId,value: props.modelValue,fileUpload: fileUpload,emoji: {useUnicode: true,},header: {anchorStyle: "autonumber",},editor: {defaultModel: "editOnly",},toolbars: {theme: "light",toolbar: ["bold","italic","underline","strikethrough","|","color","header","|","list","image",{insert: ["audio","video","link","hr","br","code","formula","toc","table","line-table","bar-table","pdf","word",],},"graph","settings",// "switchModel","togglePreview",],bubble: ["bold","italic","underline","strikethrough","sub","sup","|","size","color",],float: ["h1","h2","h3","|","checklist","quote","quickTable","code",],customMenu: [],},callback: {afterChange: afterChange,beforeImageMounted: beforeImageMounted,},});
};
6.定义上传图片、获取数据的方法(这里可以实际需求做判断)
// 上传通用接口未实现audioVideo
const fileUpload = (file, callback) => {if (file.size / 1024 / 1024 > 200) {return proxy.$modal.msgError("请上传200M以内的图片!");}if (!file.type.includes("image")) {return proxy.$modal.msgError("仅支持上传图片!");}const formData = new FormData();formData.append("file", file);console.log(file, "file");loading.value = true;uploadImg(props.knwlgId, formData).then((res) => {loading.value = false;callback(import.meta.env.VITE_APP_BASE_API +"/ekms/images/v1/preview/" +res.data.imgId);}).catch(() => {loading.value = false;});
};// 变更事件回调
const afterChange = (e) => {emits("setHtml", getCherryContent(), getCherryHtml());
};// 获取渲染后html内容
const getCherryHtml = () => {const result = cherrInstance.value.getHtml();// console.log(result, "get");return result;
};// 获取markdown内容
const getCherryContent = () => {const result = cherrInstance.value.getMarkdown();return result;
};// 设置markdown内容
const setCherryContent = (val) => {cherrInstance.value.setMarkdown(val, 1);
};// 图片加载回调
const beforeImageMounted = (e, src) => {return { [e]: src };
};
defineExpose({getCherryHtml,setCherryContent,
});
使用该组件:
<CherryMDref="MDRef"v-model="mdContent":knwlgId="artDetails.pkId"@setHtml="getContent"/>const mdContent = ref("");//设置默认值mdContent.value = res.data.content;nextTick(() => {proxy.$refs.MDRef.setCherryContent(res.data.content || "");});// 获取文章结构信息
const getContent = (content, html) => {mdHtml.value = html;mdContent.value = content;changeArticle();
};
相关文章:
vue3中使用cherry-markDown步骤
附cherry-markDown官网及api使用示例 官网:GitHub - Tencent/cherry-markdown: ✨ A Markdown Editor api:Cherry Markdown API 考虑到复用性,我在插件的基础上做了二次封装,步骤如下: 1.下载 npm install cherry-ma…...
数据建模方法论及实施步骤
了解数据建模之前首先要知道的是什么是数据模型。数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。 一、概要:数据…...
AUTOSAR知识点 之 COM (一):基础知识
目录 1、概述 1.1、简介 1.2、各模块依赖关系 1.2.1、PDUR关系 1.2.2、RTE 2、SPEC解读...
自媒体品牌宣传策略注意哪些,是怎么种草的
众所周知,小红书平台有着极其强大的种草能力。不论新品牌孵化,还是大品牌扩张,都会将目光投注到这里,那么小红书的品牌宣传策略究竟是怎样的呢。 一、聚焦种草能力 前面已经提到了,小红书平台是一个以“种草”为特色的…...
网络带宽管理
网络某一部分的带宽使用过多,可能会影响整个网络的性能,带宽问题甚至会影响业务关键型服务并导致网络停机。在企业中保持稳定的网络性能可能具有挑战性,因为采用数字化的网络可扩展性和敏捷性应该与组织的发展同步。随着基础设施的扩展、新应…...
SpringCloud(27. Redis 和 ZK 分布式锁)
上一篇 :26.分布式服务框架Dubbo面试题简析 1. redis 分布式锁 官方叫做 RedLock 算法,是 redis 官方支持的分布式锁算法。这个分布式锁有 3 个重要的考量点: 互斥(只能有一个客户端获取锁)不能死锁容错(…...
运行时栈帧结构与方法调用
1 运行时栈帧结构 Java虚拟机以方法作为最基本执行单元,“栈帧”则是用于支持虚拟机进行方法调用和方法执行背后的数据结构。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 1.1 局部变量表 局部变量表的容量以变量槽为最小单位。 Java…...
VSCode +gdb+gdbserver远程调试arm开发板
一、下载编译器 从ARM官网下载gcc-arm编译器,编译器中自带gdb和gdbserver,可以省去自己编译。 注:gdb是电脑端程序,gdbserver是arm开发板程序 arm官网链接:https://developer.arm.com/downloads/-/arm-gnu-toolchain-d…...
阿里云大学考试python中级题目及解析-python高级
阿里云大学考试python高级题目及解析 1.以上代码输出结果为 a [1,2,3,None,(),[],] print(len(a))A.4 B.5 C.6 D.syntax error C 列表中元素可以存储任意数据类型 2.将字符串s 中的字母a替换为字母,以下代码正确的是 A.s.swap(“b”,“a”) B.s.r…...
基于FPGA的车牌识别
基于FPGA进行车牌识别 基于FPGA进行车牌识别 1. 文件说明2. 程序移植说明3. 小小的编程感想 本项目的原理讲解视频已经上传到B站“基于FPGA进行车牌识别”。 本项目全部开源,见我本人的Github仓库“License-Plate-Recognition-FPGA”。 1. 文件说明 小技巧&…...
Qt - 进程/线程 补充进阶
Qt - 进程/线程 补充进阶 多线程quit / eixt / terminate QThread例子tdicethread 类.h.cpp widget 类.h.cpp 线程同步 多线程 quit / eixt / terminate quit 应用程序或线程安全的取消事件处理队列的执行,并随后使线程退出(如果只希望结束线程并保证它…...
spring笔记
spring 和 springboot的区别 自动配置原理 beanFactory接口和ApplicationContext接口 两个都是 IOC 容器 ApplicationContext接口是BeanFactory接口实现类的子类 功能: ApplicationContext扩展BeanFactory BeanFactoryApplicationContext控制反转国际化支持 …...
最大熵模型
最大熵模型(maximum entropy model)由最大熵原理推导实现 最大熵原理 最大熵原理是概率模型学习的一个准则。最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型时最好…...
微服务中网关的配置
一、添加 Spring Cloud Gateway 依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency>二、配置网关路由 在application.yaml中配置如下内容:…...
Linux基本指令实现4及热键指令详解
目录 Linux热键补充: 1.bc指令: Tab键的智能补充: ctrlc键: uname指令: lscpu指令: lsmem指令: df -h指令: 关机指令: 扩展指令: Linux热键补充&#…...
系统调用与API
系统调用介绍 什么是系统调用 为了让应用程序有能力访问系统资源,也为了让程序借助操作系统做一些由操作系统支持的行为,每个操作系统都会提供一套接口,以供应用程序使用。系统调用涵盖的功能很广,有程序运行所必需的支持…...
OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块
文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先,根据点云场景将其划分为一个个grid,这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 6…...
【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(上)
MyEclipse v2022.1.0正式版下载 一、HTML & JSP 可视化设计器 本文简要介绍了 MyEclipse HTML 和 JSP Web 设计器的概念、功能和基本操作过程。这两个设计器具有相似的功能和相同的操作模型,但本文为专门针对其类型的内容。本文档中的示例是使用 MyEclipse HT…...
Node开发Web后台服务
简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。 能方便地搭建响应速度快、易于扩展的网络应用&#…...
Linux下对mmap封装使用
Linux下对mmap封装使用 1、mmap简介2、Linux下mmap使用介绍2.1、mmap函数2.2、munmap函数 3、对mmap进行封装4、对封装类MEM_MAP进行测试5、mmap原理6、源代码下载 1、mmap简介 mmap即memory map,是一种内存映射文件的技术。mmap可以将一个文件或者其它对象映射到进…...
H5年会抽奖实战:手机号与微信头像双模式实现
1. 为什么选择H5实现年会抽奖 每到年底,企业年会就成了大家最期待的活动之一。作为技术人,我们总想用些新花样让抽奖环节更有趣。去年我负责公司年会抽奖系统开发时,就遇到了一个典型需求:既要支持传统的手机号抽奖,又…...
如何快速搭建个人飞行监控系统:完整ADS-B信号解码实战指南
如何快速搭建个人飞行监控系统:完整ADS-B信号解码实战指南 【免费下载链接】dump1090 Dump1090 is a simple Mode S decoder for RTLSDR devices 项目地址: https://gitcode.com/gh_mirrors/dump/dump1090 想要实时追踪头顶飞过的航班吗?梦想拥有…...
遥感数字图像处理教程【1.6】
3 . 3 单波段图像的统计如果没有特殊的说明,设 数 字 图 像 为 大 小 为 M x N , N 为图像的列数,例为图像的行数, z 0,-, N-l, J 0,… ,M - \ o3 . 3 . 1 基本的统计量1 . 反映图像平均信息的统计参数1)均值像素值的…...
2026年终极B站资源下载方案:BiliTools跨平台工具箱完整指南
2026年终极B站资源下载方案:BiliTools跨平台工具箱完整指南 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …...
ConvNeXt 系列改进:二次创新 ConvNeXt:结合 RepVGG 结构重参数化,训练多分支、推理单路
关键词:ConvNeXt RepVGG 结构重参数化 推理加速 模型部署 写在前面 2026年的视觉模型赛道呈现出一种有趣的“返璞归真”趋势——在Transformer狂飙数年之后,卷积网络正以全新的姿态回归。这其中,ConvNeXt无疑是纯卷积阵营中最耀眼的明星。从2022年Meta AI首次提出至今,…...
实时手机检测-通用效果展示:手机横竖屏姿态识别辅助检测结果标注
实时手机检测-通用效果展示:手机横竖屏姿态识别辅助检测结果标注 1. 引言 你有没有遇到过这样的场景?在整理手机拍摄的照片时,想快速筛选出所有包含手机的图片,或者在一个监控视频里,需要统计某个区域手机出现的频率…...
Win11 WSL2 + Ubuntu 24.04 下,如何让nRF开发板(DK)被VS Code和NCS v3.0.0正确识别?
Win11 WSL2环境下nRF开发板与NCS v3.0.0深度集成指南 当嵌入式开发遇上WSL2的Linux高效编译环境,硬件连接往往成为最后一道障碍。本文将彻底解决nRF开发板在Windows主机与WSL2 Ubuntu子系统间的识别难题,打造无缝硬件调试体验。 1. 环境准备与核心工具链…...
Cesium河流流向效果实战:从‘会动’到‘真实’的避坑指南(解决闪烁、错位问题)
Cesium河流流向效果实战:从‘会动’到‘真实’的避坑指南 在三维GIS可视化领域,河流流向动画一直是提升场景真实感的关键细节。当你在水利工程模拟中看到一条自然流动的河流,或在城市内涝分析中观察到雨水流向的动态呈现,这种视觉…...
PID微分噪声抑制实战:低通滤波器的参数整定与系统调优
1. PID微分噪声的根源与低通滤波的必要性 在工业控制和机器人系统中,PID控制器就像一位经验丰富的驾驶员,比例项负责当前路况判断,积分项纠正历史偏差,而微分项则像预判前方弯道的"老司机直觉"。但这位"老司机&quo…...
FigmaCN:3分钟让Figma界面说中文的终极解决方案
FigmaCN:3分钟让Figma界面说中文的终极解决方案 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾因Figma的全英文界面而困扰?是否在紧张的设计工作中频繁…...
