vue2集成可在线编辑的思维导图(simple-mind-map)
最近要求做一个可在线编辑的思维导图,经过层层调研和实测,最简单的思维导图导图实现还得是simple-mind-map组件
simple-mind-map中文文档
当前我使用的是vue2项目,目前没试过是否支持vue3,但是看官网描述他们也给了有vue3的demo项目
集成方式
1.node版本:16.20.2(官方使用的版本是14)
2.执行:npm i simple-mind-map
3.看图片描述
transpileDependencies: [‘simple-mind-map’]
到这里集成结束
实现代码
<template><div class="flow-chart-container"><div id="mindMapContainer"></div><!-- 右键菜单 --><divclass="context-menu"v-show="show":style="{ left: left + 'px', top: top + 'px' }"><div class="menu-item" @click="insertChild" v-if="type === 'node'">插入子节点</div><divclass="menu-item"@click="insertSibling"v-if="type === 'node' && !isRoot">插入同级节点</div><divclass="menu-item"@click="insertParent"v-if="type === 'node' && !isRoot">插入父节点</div><divclass="menu-item"@click="deleteNode"v-if="type === 'node' && !isRoot">删除节点</div><divclass="menu-item"@click="moveUp"v-if="type === 'node' && !isRoot && !isFirst">上移节点</div><divclass="menu-item"@click="moveDown"v-if="type === 'node' && !isRoot && !isLast">下移节点</div></div></div>
</template><script>
import MindMap from "simple-mind-map";
export default {name: "FlowChart",data() {return {mindMap: null,// 右键菜单相关数据type: "", // 当前右键点击的类型currentNode: null, // 当前右键点击的节点left: 0, // 菜单显示的位置top: 0,show: false, // 是否显示菜单isRoot: false, // 是否是根节点isFirst: false, // 是否是同级第一个节点isLast: false, // 是否是同级最后一个节点};},mounted() {this.mindMap = new MindMap({el: document.getElementById("mindMapContainer"),enableFreeDrag: true,data: {data: {text: "根节点",},children: [],},});// 监听节点右键事件this.mindMap.on("node_contextmenu", (e, node) => {e.preventDefault();this.type = "node";this.left = e.clientX + 10;this.top = e.clientY + 10;this.show = true;this.currentNode = node;// 判断节点类型this.isRoot = node.isRoot;if (!this.isRoot) {const siblings = node.parent.children;this.isFirst = siblings[0] === node;this.isLast = siblings[siblings.length - 1] === node;}});// 点击其他区域隐藏菜单this.mindMap.on("node_click", this.hideMenu);this.mindMap.on("draw_click", this.hideMenu);},methods: {// 隐藏菜单hideMenu() {this.show = false;this.left = 0;this.top = 0;this.type = "";this.currentNode = null;},// 插入子节点insertChild() {console.log("插入子节点");this.mindMap.execCommand("INSERT_CHILD_NODE", this.currentNode);this.hideMenu();},// 插入同级节点insertSibling() {this.mindMap.execCommand("INSERT_NODE", this.currentNode);this.hideMenu();},// 插入父节点insertParent() {this.mindMap.execCommand("INSERT_PARENT_NODE", this.currentNode);this.hideMenu();},// 删除节点deleteNode() {this.mindMap.execCommand("REMOVE_NODE", this.currentNode);this.hideMenu();},// 上移节点moveUp() {this.mindMap.execCommand("UP_NODE", this.currentNode);this.hideMenu();},// 下移节点moveDown() {this.mindMap.execCommand("DOWN_NODE", this.currentNode);this.hideMenu();},},
};
</script><style lang="scss" scoped>
#mindMapContainer {width: 100%;height: 100%;
}
#mindMapContainer * {margin: 0;padding: 0;
}.flow-chart-container {width: 100%;height: 100vh;position: relative;overflow: hidden;
}.context-menu {position: fixed;background: #fff;border-radius: 4px;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);padding: 5px 0;z-index: 1000;.menu-item {padding: 7px 16px;cursor: pointer;font-size: 14px;color: #333;transition: all 0.3s;&:hover {background: #f5f5f5;}}
}
</style>
至于导出和导入就自己照着官网加吧,我用不到就不加了
相关文章:

vue2集成可在线编辑的思维导图(simple-mind-map)
最近要求做一个可在线编辑的思维导图,经过层层调研和实测,最简单的思维导图导图实现还得是simple-mind-map组件 simple-mind-map中文文档 当前我使用的是vue2项目,目前没试过是否支持vue3,但是看官网描述他们也给了有vue3的demo项…...
Java静态变量数据共享深度解析(附多场景案例)[特殊字符]
Java静态变量数据共享深度解析(附多场景案例)🔍 关键词:数据共享 静态变量 线程安全 内存管理 🌐 一、静态变量共享的三大层次 1. 类实例间共享(基础级) class GameServer {// 统计在线玩家数…...

如何在Windows右键新建菜单中添加自定义项,将notepad添加到新建菜单
一、简介 Windows 右键新建菜单的核心管理机制隐藏在注册表的 HKEY_CLASSES_ROOT 根键中。这里存在两种关键注册表项:文件扩展名项和文件类型项,它们共同构成了新建菜单的完整控制体系。 以常见的.txt文件为例,系统通过以下机制实现新建菜单…...
Flink运维要点
一、Flink 运维核心策略 1. 集群部署与监控 资源规划 按业务优先级分配资源:核心作业优先保障内存和 CPU,避免资源竞争。示例:为实时风控作业分配专用 TaskManager,配置 taskmanager.memory.process.size8g。 监控体系 集成 Prom…...

CS016-4-unity ecs
【37】将系统转换为任务 Converting System to Job 【Unity6】使用DOTS制作RTS游戏|17小时完整版|CodeMonkey|【37】将系统转换为任务 Converting System to Job_哔哩哔哩_bilibili a. 将普通的方法,转化成job。第一个是写一个partial struct xxx;第二…...

微信小程序第三方代开发模式技术调研与实践总结
🚀 微信小程序第三方代开发模式技术调研与实践总结 📖 前言 随着企业对私有化品牌运营诉求的增加,许多大型客户希望将原本由 SaaS 平台统一提供的小程序迁移至自有主体(AppID)下运行,同时又希望继续沿用 SaaS 平台的业务服务与数据托管方式。微信开放平台提供的“小程…...

upload-labs通关笔记-第8关 文件上传之点绕过
目录 一、点绕过原理 二、deldot()函数 三、源码分析 四、渗透实战 1、构建脚本test8.php 2、打开靶场 3、bp开启拦截 4、点击上传 5、bp拦截 6、后缀名增加点 7、发包并获取脚本地址 8、访问脚本 本文通过《upload-labs靶场通关笔记系列》来进行upload-labs靶场的渗…...
远程连接电脑的方法?异地远程桌面连接和三方软件实现
远程连接电脑,是指通过网络技术,在一台设备上操控另一台设备的电脑桌面,实现跨地域的操作和管理。在日常工作、技术支持、远程办公等场景中,远程连接电脑都发挥着重要作用。实现远程连接电脑主要有系统自带工具和第三方软件两种方…...

PCL PolygonMesh 与 TextureMesh 源码阅读与简单测试
Title: PCL PolygonMesh 与 TextureMesh 源码阅读与简单测试 文章目录 I . PolygonMesh1. PolygonMesh 结构体2. Vertices 结构体与点云索引3. 测试 PolygonMesh II. TextureMesh1. TextureMesh 结构体2. TexMaterial 结构体3. 纹理坐标与纹理坐标索引4. 测试 TextureMesh 以下…...

量子算法:开启计算新时代的技术密码
摘要 量子算法是利用量子力学特性(如叠加态、纠缠、干涉)设计的计算模型,在特定问题上相比经典算法具有指数级加速优势。本文深入探讨了量子算法的核心原理、代表性算法及其在多个领域的应用,分析了量子算法面临的挑战与未来发展…...

多线程代码案例-1 单例模式
单例模式 单例模式是开发中常见的设计模式。 设计模式,是我们在编写代码时候的一种软性的规定,也就是说,我们遵守了设计模式,代码的下限就有了一定的保证。设计模式有很多种,在不同的语言中,也有不同的设计…...

CSS实现文本自动平衡text-wrap: balance
不再有排版孤行和寡行 我们都知道那些标题,最后一个单词换行并单独站在新行上,破坏了视觉效果,看起来很奇怪。当然,有老式的 手动换行或将内容分成不同部分。但您听说过text-wrap: balance吗? 通过应用text-wrap: bal…...

mac M芯片运行docker-desktop异常问题
虽然mac已经迭代到m4了,但官方的docker-desktop运行仍然有问题,包括但不限于: 命令行docker找不到docker-desk打不开docker-desktop闪退容器起不来 尝试不同版本后,看到了其他可以在mac跑docker的开源方法,更简单、轻…...
主流数据库运维故障排查卡片式速查表与视觉图谱
主流数据库运维故障排查卡片式速查表与视觉图谱 本文件将主文档内容转化为模块化卡片结构,并补充数据库结构图、排查路径图、锁机制对比等视觉图谱,以便在演示、教学或现场排障中快速引用。 📌 故障卡片速查:连接失败 数据库检查…...

事件响应策略规范模版
事件响应策略 一、事件分级定义 根据事件对业务的影响程度和紧急程度,将事件分为 4个等级(P1-P4),明确各级事件的判定标准:、 二、响应时效承诺 响应时间(从事件确认到首次回复) P1 事件:15 分钟内响应(724 小时电话 / 工单优先接入) P2 事件:30 分钟内响应(工…...
在哪一个终端下运行有影响吗?pip install pillow
在哪一个终端下运行有影响吗?pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn,需要切换到主目录吗? 1. 是否需要切换目录? 不需要切换目录 pip install 安装的包会存放…...
我用 Appuploader绕过 Mac,成功把 iOS 应用上线了 App Store
我以前总觉得,iOS 上架是 macOS Xcode 专属的领域。直到最近项目必须要上架 iOS,团队却没人用 Mac,只能临时组建了一套“跨平台上架流程”。 这篇文章记录我这个“非典型 iOS 开发者”是如何绕开传统 Xcode 流程,借助一系列工具…...
React学习———React Router
React Router React Router 是 React 应用中用于管理路由的流行库,它允许你在单页应用(SPA)中实现导航和页面切换而无需重新加载页面。 安装 npm install react-router-dom核心组件 <BrowserRouter> 使用HTML5的历史记录API&#…...

MGX:多智能体管理开发流程
MGX的多智能体团队如何通过专家混合系统采用全新方法,彻底改变开发流程,与当前的单一智能体工具截然不同。 Lovable和Cursor在自动化我们的特定开发流程方面取得了巨大飞跃,但问题是它们仅解决软件开发的单一领域。 这就是MGX(MetaGPT X)的用武之地,它是一种正在重新定…...
现在环保方面有什么新的技术动态
环保领域的技术发展迅速,尤其在“双碳”目标、数字化转型和可持续发展背景下,涌现出许多创新技术和应用。以下是当前环保领域的新技术动态(截至2024年): 一、碳中和与碳减排技术 CCUS(碳捕集、利用与封存&a…...
归并排序:分治思想的优雅实现
归并排序(Merge Sort)以简洁而高效的分治思想,在众多排序算法中占据着重要的地位。今天,就让我们一同深入探索归并排序的奥秘。 一、归并排序简介 归并排序是一种基于分治策略的排序算法。它的核心思想是将一个大的问题分解成若…...

采购流程规范化如何实现?日事清流程自动化助力需求、采购、财务高效协作
采购审批流程全靠人推进,内耗严重,效率低下? 花重金上了OA,结果功能有局限、不灵活? 问题出在哪里?是我们的要求太多、太苛刻吗?NO! 流程名称: 采购审批管理 流程功能…...

[模型部署] 3. 性能优化
👋 你好!这里有实用干货与深度分享✨✨ 若有帮助,欢迎: 👍 点赞 | ⭐ 收藏 | 💬 评论 | ➕ 关注 ,解锁更多精彩! 📁 收藏专栏即可第一时间获取最新推送🔔…...

Vue3 加快页面加载速度 使用CDN外部库的加载 提升页面打开速度 服务器分发
介绍 CDN(内容分发网络)通过全球分布的边缘节点,让用户从最近的服务器获取资源,减少网络延迟,显著提升JS、CSS等静态文件的加载速度。公共库(如Vue、React、Axios)托管在CDN上,减少…...

接触感知 钳位电路分析
以下是NG板接触感知电路的原理图。两极分别为P3和P4S,电压值P4S < P3。 电路结构分两部分,第一部分对输入电压进行分压钳位。后级电路使用LM113比较器芯片进行电压比较,输出ST接触感知信号。 钳位电路输出特性分析 输出电压变化趋势&a…...
彻底删除Docker容器中的环境变量
彻底删除Docker容器中的环境变量 前言:环境变量的重要性第一步:创建实验容器第二步:验证环境变量第三步:定位容器"身份证"第四步:修改"出生证明"(重要!)第五步:验证手术成果技术原理深度剖析更安全的替代方案常见问题解答结语:知其然更要知其所以…...

使用 gcloud CLI 自动化管理 Google Cloud 虚拟机
被操作的服务器,一定要开启API完全访问权限,你的电脑安装gcloud CLI前一定要先安装Python3! 操作步骤 下载地址,安装大概需要十分钟:https://cloud.google.com/sdk/docs/install?hlzh-cn#windows 选择你需要的版本&a…...

SQL语句,索引,视图,存储过程以及触发器
一、初识MySQL 1.数据库 按照数据结构来组织、存储和管理数据的仓库;是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合; 2.OLTP与OLAP OLTP( On-Line transaction processing )翻译为联机事务处理&am…...
在Web应用中集成Google AI NLP服务的完整指南:从Dialogflow配置到高并发优化
在当今数字化客服领域,自然语言处理(NLP)技术已成为提升用户体验的关键。Google AI提供了一系列强大的NLP服务,特别是Dialogflow,能够帮助开发者构建智能对话系统。本文将详细介绍如何在Web应用中集成这些服务,解决从模型训练到高并发处理的全套技术挑战。 一、Dialogflow…...

7. 进程控制-进程替换
目录 1. 进程替换 1.1 单进程版: 1.2 进程替换的原理 1.3 多进程版-验证各种程序替换接口 2. 进程替换的各种接口 2.1 execl 2.2 execlp 2.3 execv 2.4 execvp 2.5 execle 1. 进程替换 上图为程序替换的接口,之后会详细介绍。 1.1 单进程版&am…...