高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图

目录

高效工作流:用Mermaid绘制你的专属流程图

一、流程图的使用场景

1.1、流程图flowChart

1.2、使用场景

二、如何使用mermaid画出优雅的流程图

2.1、流程图添加图名

2.2、定义图类型与方向

2.3、节点形状定义

2.3.1、规定语法

2.3.2、不同节点案例

2.4、节点连线

2.5、子图与多流程图互操作

2.5.1、多流程图且相互影响

2.5.2、子图的方向

2.6、定义节点类

三、Vue3中如何导入mermaid

3.1、下载并安装mermaid组件

3.2、导入并初始化mermaid流程图

四、mermaid绘制流程图的优缺点

五、总结


如果您希望直接访问Vue3导入mermaid的代码,可以直接访问:三、Vue3中如何引入mermaid

高效工作流:用Mermaid绘制你的专属流程图

一、流程图的使用场景

1.1、流程图flowChart

        流程图是对某一个问题的定义、分析或解法的图形表示,图中用各种符号来表示操作、数据、流向以及装置等。使用图形表示算法的思路是一种极好的方法,因为千言万语不如一张图。通常用于计算机科学、业务流程设计、工程等领域。

电灯修理思路流程图

1.2、使用场景

        流程图使用场景非常广泛,如软件开发、项目管理、工作流程、科学研究、制造和生产等。

二、如何使用mermaid画出优雅的流程图

2.1、流程图添加图名

        在最上方添加如下内容:

---
title: Your flow chart title
---

        例:

---
title: test model
---
flowchart LR
A[input] --> B[peocess]
B --> C[output1]
B --> D[output2]

2.2、定义图类型与方向

        flowchart代表定义为流程图,流程图的方向定义在flowchart旁边,支持四种方向,分别是top、bottom、left和right的缩写,比如LR就是从左到右。还有TB(TD:top to down)、BT(DT不行)、LR、RL。

        例:

---
title: test model
---
flowchart TB
%% flowchart BT
%% flowchart LR
%% flowchart RL
A[input] --> B[peocess]
B --> C[output1]
B --> D[output2]

2.3、节点形状定义
2.3.1、规定语法

        mermaid中定义节点形状用的是不同类型的括号,每一种括号都对应着一种节点形状。这个特性让mermaid成为目前最简单易用的流程图之一,也同样限制了mermaid的灵活度和上限。

  • 圆角矩形节点:(节点名)
  • 两端是半圆的矩形节点:([节点名])
  • 矩形套矩形(子程序形状)节点:[[节点名]]
  • 圆柱形(数据库形状)节点:[(节点名)]
  • 圆形节点:((节点名))
  • 旗帜形节点:>节点名]
  • 菱形节点:{节点名}
  • 六边形节点:{{节点名}}
  • 平行四边形:[/节点名/]
  • 反向平行四边形:[\节点名\]
  • 梯形:[/节点名\]
  • 倒梯形:[\节点名/]
  • 双环圆:(((节点名)))
2.3.2、不同节点案例
---
title: test model
---
flowchart TB
A(节点名1)
B([节点名2])
C[[节点名3]]
D[(节点名4)]
E((节点名5))
F>节点名6]
A --> H{节点名7}
B -->I{{节点名8}}
C -->J[/节点名9/]
D -->K[\节点名10\]
E -->L[/节点名11\]
F -->M[\节点名12/]
F -->N(((节点名13)))

2.4、节点连线

        mermaid中定义节点连线用的是预定义的符号组合,每一种都对应着一种连线形状。这个特性让mermaid成为目前最简单易用的流程图之一,也同样限制了mermaid的灵活度和上限。

        需要注意的是,mermaid所使用的连接线是贝塞尔曲线,你可以修改连线的样式、首段、末端,但是却不能直接改变线的走向,哪怕只是从曲线变成折线。

  • 带箭头的连线:A-->B
  • 不带箭头连线:A --- B
  • 带文本的连线:A--文本内容---B/A---|文本内容|B(如果要箭头就将最后一个-变成>,两种表示方法一样)
  • 虚线:A-.->B
  • 虚线带文本:A-. 文本内容 .-> B
  • 粗线:A ==> B
  • 粗线带文本:A == 文本内容 ==> B
  • 隐藏连线(可以用来控制节点位置):A ~~~ B
  • 其他箭头:A --o B(末端为圆形)、A --x B(末端为星形)
  • 双箭头:A<-->B、A o--o B、A x--x B
2.5、子图与多流程图互操作
2.5.1、多流程图且相互影响

        在父图中定义子图之间的联系,通过subgraph定义子图及子图中的内容。

flowchart TBc1-->a2subgraph onea1-->a2endsubgraph twob1-->b2endsubgraph threec1-->c2end

2.5.2、子图的方向

        在子图中,通过direction定义方向,其他的不变。

flowchart LRsubgraph TOPdirection TBsubgraph B1direction RLi1 -->f1endsubgraph B2direction BTi2 -->f2endendA --> TOP --> BB1 --> B2

2.6、定义节点类

        这是三种节点的类定义:

classDef inputData fill:#fff8f8,stroke:#000,stroke-width:2px;

classDef outputData fill:#b9e6d3,stroke:#000,stroke-width:2px;

classDef process fill:#07689f,stroke:#000,stroke-width:2px;

        classDef用来声明,第二个是类名,fill是设置填充的颜色,stroke是边框颜色,stroke-width是边框宽度。使用的话用三个连续的英文冒号即可,如:A[1]:::inputData --> B[2]:::process

graph TD
%% 定义节点样式classDef inputData fill:#fff8f8,stroke:#000,stroke-width:2px;classDef outputData fill:#b9e6d3,stroke:#000,stroke-width:2px;classDef process fill:#07689f,stroke:#000,stroke-width:2px,color:#fff;%% 节点定义A1[数据1]:::inputData --> B1[/过程1/]:::processA2[数据2]:::inputData --> B1B1 --> C1[数据3]:::outputDataB1 --> C2[数据4]:::outputDataB1 --> C3[数据5]:::outputDataC1 --> D1[数据3]:::inputDataC2 --> D2[数据4]:::inputDataF1[数据6]:::inputData --> E1D1 --> E1[/过程2/]:::processD2 --> E1E1 --> G1[数据7]:::outputDataE1 --> G2[数据8]:::outputDataG1 --> H1[数据7]:::inputDataH1 --> I1[/过程3/]:::processI1 --> J1[数据9]:::outputDataI1 --> J2[数据10]:::outputDataI1 --> J3[数据11]:::outputDataI1 --> J4[数据12]:::outputDataI1 --> J5[数据13]:::outputData

        效果如下:

三、Vue3中如何导入mermaid

3.1、下载并安装mermaid组件

npm install mermaid

3.2、导入并初始化mermaid流程图
<template><div class="container"><pre class="mermaid">{{ mermaidCode }}</pre></div>
</template><script setup>
import mermaid from "mermaid"; //引用mermaid
import { onMounted, ref } from "vue";const mermaidCode = ref(`
graph TD;A-->B;A-->C;B-->D;C-->D;
`);onMounted(() => {mermaid.initialize({ startOnLoad: true });mermaid.init();
});
</script>

四、mermaid绘制流程图的优缺点

        优点很简单,太简单了,好学,支持vue3,语义化极强,所见即所得,除了空格写的每一个mermaid语法的符号都有作用。

        同时支持在线绘制:Online FlowChart & Diagrams Editor - Mermaid Live Editor

        缺点也很明显,预定义较多,自定义不足,上手快但是用起来死板。而且mermaid生成的是svg图像,初始状态无法保存为图片,无法点击拖拽等交互,甚至连缩放都做不到。

        此外,从上图已经可以看出来了,稍微复杂一点的结构或者节点自定义,mermaid表现出来的流程图就已经有点丑了。而且柔滑的贝塞尔曲线看起来非常不专业(从来没在论文里面见过弯曲连线的流程图)

五、总结

        mermaid是一款非常优秀的基于 JavaScript 的图表绘制工具,可渲染 Markdown 启发的文本定义以动态创建和修改图表。非常适合新手学习或者做一些弱交互且自定义要求不高的图表

        除了流程图以外,mermaid还支持序列图、类图、状态图、实体关系图等图表可供探索。

        博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

         更多优质内容,请关注:

JS语法与Vue开发:

        浏览器渲染揭秘:从加载到显示的全过程

        Vue 性能革命:揭秘前端优化的终极技巧

        属性描述符初探——Vue实现数据劫持的基础

        你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解

        最细最有条理解析:事件循环(消息循环)是什么?进程与线程的定义、关系与差异

        路由通配符,小小的字符有大大的作用,你真的熟悉吗? 

        管理数据必备!侦听器watch用法详解

        什么是深拷贝?深拷贝和浅拷贝有什么区别

        对象数据的读取,看这一篇就够了!

        通过array.every()实现数据验证、权限检查和一致性检查,array.some与array.every的区别

        通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理

        通过array.map()实现数据转换、创建派生数组、异步数据流处理、搜索和过滤等需求

        通过array.reduce()实现数据汇总、条件筛选和映射、对象属性的扁平化、转换数据格式等

        通过array.filter()实现数组的数据筛选、数据清洗和链式调用

        多维数组操作,不要再用遍历循环foreach了,来试试数组展平的小妙招!

        别再用双层遍历循环来做新旧数组对比,寻找新增元素了!

        shpfile转GeoJSON且控制转化精度;如何获取GeoJSON?GeoJson结构详解

        Mapbox添加行政区矢量图层、分级设色图层、自定义鼠标悬浮框、添加天地图底图等

Element plus拓展:

        通过el-tree自定义渲染网页版工作目录,实现鼠标悬浮显示完整名称等

        el-table实现动态数据的实时排序,一篇文章讲清楚elementui的表格排序功能

        el-table中如何添加渐变色带、多色色带

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1488805.html

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

相关文章

昇思25天学习打卡营第1天|简单深度学习

前言 昇思MindSpore是一个全场景深度学习框架&#xff0c;旨在实现易开发、高效执行、全场景统一部署三大目标。 其中&#xff0c;易开发表现为API友好、调试难度低&#xff1b;高效执行包括计算效率、数据预处理效率和分布式训练效率&#xff1b;全场景则指框架同时支持云、边…

SpringBoot添加密码安全配置以及Jwt配置

Maven仓库&#xff08;依赖查找&#xff09; 1、SpringBoot安全访问配置 首先添加依赖 spring-boot-starter-security 然后之后每次启动项目之后&#xff0c;访问任何的请求都会要求输入密码才能请求。&#xff08;如下&#xff09; 在没有配置的情况下&#xff0c;默认用户…

【2024最新版】Stable diffusion汉化版安装教程(附SD安装包),一键激活,永久免费!

目前广泛使用的Stable Diffusion Web UI简称(SDWebUI)是发布在开源平台Github上的一个Python项目,与通常的软件安装方法不同,这个项目并不是下载并安装即可使用的应用程序,而是需要准备执行环境,编译源码. 如果你是一个新手不会安装,现在可以直接使用一键启动包. 例如:国内的…

计算机网络实验-RIP配置与分析

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、相关知识 路由信息协议&#xff08;Routing Information Protocol&#xff0c;RIP&#xff09;是一种基于距离向量&#xff08;Distance-Vector&…

noVNC使用与介绍

noVNC使用与介绍报告 1. 概述 VNC&#xff08;Virtual Network Console&#xff0c;虚拟网络控制台&#xff09;是一种流行的远程桌面访问协议&#xff0c;它允许用户通过网络连接到远程计算机的图形界面。VNC协议的实现通常包括两个主要组件&#xff1a;服务器端&#xff08…

不同行情下算法的具体使用!

上一篇我们说到了不同公司算法交易的区分&#xff0c;有朋友提出了不同的行情下的算法交易应该怎么使用&#xff0c;小编今天就带大家了解下&#xff01;当然具体实际状况百出&#xff0c;这种可以实际为准&#xff08;韭菜修养全拼实际探讨交流&#xff09;&#xff01; 我们在…

Java:实现RSA加密与验证的方法详解

1 RSA简介 RSA加密是一种非对称加密。可以在不直接传递密钥的情况下&#xff0c;完成解密。这能够确保信息的安全性&#xff0c;避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程&#xff0c;分别称为公钥和私钥。两者之间有数学相关&#xff0c;该加…

AI画师来袭:精选6款AI美女绘画软件,让创意无限

随着互联网的发展&#xff0c;“AIGC” 一词成为了人们热议的话题&#xff0c;看着 AI 生成的美丽的风景照、生活照以及一些奇观&#xff0c;你最开始以为这些都是真实存在的&#xff0c;但如果有人告诉你&#xff0c;这是 AI 生成的&#xff0c;你一定会再次感叹 AI 技术的强大…

优化医疗数据管理:Kettle ETL 数据采集方案详解

在现代医疗保健领域&#xff0c;数据的准确性、完整性和及时性对于提高医疗服务质量和患者护理至关重要。为了有效管理和利用医疗数据&#xff0c;Kettle ETL&#xff08;Extract, Transform, Load&#xff09;数据采集方案成为了许多医疗机构的首选工具之一。本文将深入探讨Ke…

LinkedList与链表(1万多字超级详细版本)

一. ArrayList的缺陷 上个博客已经熟悉了ArrayList的使用&#xff0c;并且进行了简单模拟实现。通过源码知道&#xff0c;ArrayList底层使用数组来存储元素&#xff1a; public class ArrayList < E > extends AbstractList < E > implements List < E &g…

C++ | Leetcode C++题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; template <class T> class PeekingIterator : public Iterator<T> { public:PeekingIterator(const vector<T>& nums) : Iterator<T>(nums) {flag Iterator<T>::hasNext();if (flag) {nextElement Ite…

河北省高校大数据人工智能实验室案例分享

随着大数据和人工智能技术的快速发展&#xff0c;教育领域也迎来了前所未有的变革机遇。泰迪智能科技作为一家专注于大数据与人工智能领域的高新技术企业&#xff0c;一直致力于将前沿技术引入教育行业&#xff0c;助力高校培养更多具有创新能力和实战经验的复合型人才。本次案…

VMware Cloud Foundation ESXi 主机

一、准备嵌套 ESXi 主机环境# 1)物理 ESXi 主机信息 本次准备用于部署 VCF 嵌套实验环境的物理宿主机的配置信息如下图所示。其实,部署 VCF 环境主要对内存的大小要求比较高,部署完整的管理域相关组件下来差不多就要占用 200 GB左右内存,而对 CPU 和存储的需求可以根据实…

商汤提出的BRECQ量化框架是个什么?

商汤提出的BRECQ量化框架是个什么&#xff1f; 引言 近年来&#xff0c;深度学习在多个领域取得了显著进展&#xff0c;但其巨大的计算成本和内存占用问题逐渐凸显。为了压缩和加速已训练好的网络&#xff0c;量化成为了一种重要的技术手段。量化主要分为两类&#xff1a;量化…

简洁高效的设备稼动率采集系统(一)

前言&#xff1a; 在自动化生产行业&#xff0c;每个公司都需要一款高效的生产设备&#xff0c;那我们怎么体现出设备的高效呢&#xff1f; 可以采集设备的状态&#xff0c;经过成熟的算法&#xff0c;得到设备的稼动率。设备稼动率是衡量生产设备在一定时间内真正处于生产状态…

Linux---01---安装VMware

一. 什么时Linux Linux 是一个开源的类 Unix 操作系统,Linux 是许多计算机硬件的底层操作系统&#xff0c;特别是服务器、嵌入式系统和个人电脑。它支持多种架构&#xff0c;包括 x86、x64、ARM 和 MIPS 等。Linux 因其稳定性、安全性、开源性以及广泛的社区支持而广受欢迎。 …

AvaloniaUI的学习

相关网站 github:https://github.com/AvaloniaUI/Avalonia 官方中文文档&#xff1a;https://docs.avaloniaui.net/zh-Hans/docs/welcome IDE选择 VS2022VSCodeRider 以上三种我都尝试过&#xff0c;体验Rider最好。VS2022的提示功能不好&#xff0c;VSCode太慢&#xff0c…

示例:演示如何使用系统自带System.ComponentModel.LicenseProvider 许可模块

一、目的&#xff1a;在开发过程中&#xff0c;定义许可验证的方式有很多&#xff0c;下面演示系统自带的许可验证的使用方法 LicenseProvider 是 .NET 框架中的一个类&#xff0c;用于实现组件和控件的许可机制。它允许开发者为自定义控件或组件添加许可验证&#xff0c;以确保…

当 Nginx 出现请求的乱序到达,如何处理?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 当 Nginx 出现请求的乱序到达&#xff0c;如何处理&#xff1f;一、理解请求乱序到达的现象二、请求乱序到达可能带来的影响三、解决方案&#xff08;一&#xf…

生物信息学新突破:在英特尔 Gaudi 2 上实现 ProtST 蛋白质语言模型加速

引言 随着人工智能技术的快速发展&#xff0c;蛋白质结构预测和语言模型在生物信息学领域扮演着越来越重要的角色。ProtST作为一种新兴的蛋白质语言模型&#xff0c;其性能在英特尔 Gaudi 2 加速器的助力下得到了显著提升。本文将探讨如何利用英特尔 Gaudi 2 加速 ProtST 模型…