学校网站系统破解版,seo百度排名优化,wordpress过滤用户输入数据库,深圳电子厂排名前十本文介绍使用mermaid画流程图#xff0c;并给出几个示例。 背景
目前#xff0c;除有明确格式要求的文档外#xff0c;笔者一般使用markdown写文档、笔记。当文档有图片时#xff0c;使用Typora等软件可实时渲染#xff0c;所见即所得。但如果文档接收方没有安装相关工具…本文介绍使用mermaid画流程图并给出几个示例。 背景
目前除有明确格式要求的文档外笔者一般使用markdown写文档、笔记。当文档有图片时使用Typora等软件可实时渲染所见即所得。但如果文档接收方没有安装相关工具效果则会大打折扣。Typora支持导出不同格式的文件。如果导出为pdf对文字拷贝不友好。如果导出为word格式不友好。
笔者的部分文档shell命令、代码版本较多因此选定html格式体积小方便浏览但对图片不友好。但是如果只是涉及流程图则可以考虑用mermaid绘制。
笔者先前知道这个东西但没用起来最近因为一份非正式文档要发布于内网且有流程图于是用之便有了本文。
实践
用法
在Typora中使用mermaid即可绘制流程图。语法如下
mermaid
graph TD
这里开始绘制如果语法正确即时可见效果如出错会有提示示例如下
下面列出画图的笔记。
graph TD 方向从上(Top)到下(Down)
direction LR方向从左(Left)到右(Right)
开始([开始做事])椭圆形与程序流程图的开始、结束类似。子流程%% 这是准备工作子流程subgraph 准备工作direction LR%%...end黄色虚线
style 打道回府 fill:#FFFFF0,stroke-dasharray:5,stroke-width:2px,stroke:#000示例简单的登录流程有判断条件
代码
graph TDA([开始]) -- B[输入用户名和密码]B -- C{验证成功?}C --|是| D[进入主页]C --|否| E[显示错误信息]D -- F([结束])E -- Bstyle A fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle F fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle C fill:#FFD2D2,stroke:#333,stroke-width:2px效果图如下 #mermaid-svg-9V5GhZeI6WAPgLhP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-9V5GhZeI6WAPgLhP .error-icon{fill:#552222;}#mermaid-svg-9V5GhZeI6WAPgLhP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-9V5GhZeI6WAPgLhP .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-9V5GhZeI6WAPgLhP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-9V5GhZeI6WAPgLhP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-9V5GhZeI6WAPgLhP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-9V5GhZeI6WAPgLhP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-9V5GhZeI6WAPgLhP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-9V5GhZeI6WAPgLhP .marker.cross{stroke:#333333;}#mermaid-svg-9V5GhZeI6WAPgLhP svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-9V5GhZeI6WAPgLhP .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-9V5GhZeI6WAPgLhP .cluster-label text{fill:#333;}#mermaid-svg-9V5GhZeI6WAPgLhP .cluster-label span{color:#333;}#mermaid-svg-9V5GhZeI6WAPgLhP .label text,#mermaid-svg-9V5GhZeI6WAPgLhP span{fill:#333;color:#333;}#mermaid-svg-9V5GhZeI6WAPgLhP .node rect,#mermaid-svg-9V5GhZeI6WAPgLhP .node circle,#mermaid-svg-9V5GhZeI6WAPgLhP .node ellipse,#mermaid-svg-9V5GhZeI6WAPgLhP .node polygon,#mermaid-svg-9V5GhZeI6WAPgLhP .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-9V5GhZeI6WAPgLhP .node .label{text-align:center;}#mermaid-svg-9V5GhZeI6WAPgLhP .node.clickable{cursor:pointer;}#mermaid-svg-9V5GhZeI6WAPgLhP .arrowheadPath{fill:#333333;}#mermaid-svg-9V5GhZeI6WAPgLhP .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-9V5GhZeI6WAPgLhP .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-9V5GhZeI6WAPgLhP .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-9V5GhZeI6WAPgLhP .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-9V5GhZeI6WAPgLhP .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-9V5GhZeI6WAPgLhP .cluster text{fill:#333;}#mermaid-svg-9V5GhZeI6WAPgLhP .cluster span{color:#333;}#mermaid-svg-9V5GhZeI6WAPgLhP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-9V5GhZeI6WAPgLhP :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是 否 开始 输入用户名和密码 验证成功? 进入主页 显示错误信息 结束 示例 订单处理流程有判断条件
代码
graph TDA([开始]) -- B[接收订单]B -- C[检查库存]C -- D{库存充足?}D --|是| E[确认订单]D --|否| F[通知库存不足]E -- G[安排发货]G -- H([结束])F -- Hstyle A fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle H fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle D fill:#FFD2D2,stroke:#333,stroke-width:2px效果图 #mermaid-svg-VMoL7hw94akNYT5v {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-VMoL7hw94akNYT5v .error-icon{fill:#552222;}#mermaid-svg-VMoL7hw94akNYT5v .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VMoL7hw94akNYT5v .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-VMoL7hw94akNYT5v .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VMoL7hw94akNYT5v .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VMoL7hw94akNYT5v .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VMoL7hw94akNYT5v .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VMoL7hw94akNYT5v .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VMoL7hw94akNYT5v .marker.cross{stroke:#333333;}#mermaid-svg-VMoL7hw94akNYT5v svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VMoL7hw94akNYT5v .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-VMoL7hw94akNYT5v .cluster-label text{fill:#333;}#mermaid-svg-VMoL7hw94akNYT5v .cluster-label span{color:#333;}#mermaid-svg-VMoL7hw94akNYT5v .label text,#mermaid-svg-VMoL7hw94akNYT5v span{fill:#333;color:#333;}#mermaid-svg-VMoL7hw94akNYT5v .node rect,#mermaid-svg-VMoL7hw94akNYT5v .node circle,#mermaid-svg-VMoL7hw94akNYT5v .node ellipse,#mermaid-svg-VMoL7hw94akNYT5v .node polygon,#mermaid-svg-VMoL7hw94akNYT5v .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-VMoL7hw94akNYT5v .node .label{text-align:center;}#mermaid-svg-VMoL7hw94akNYT5v .node.clickable{cursor:pointer;}#mermaid-svg-VMoL7hw94akNYT5v .arrowheadPath{fill:#333333;}#mermaid-svg-VMoL7hw94akNYT5v .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-VMoL7hw94akNYT5v .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-VMoL7hw94akNYT5v .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-VMoL7hw94akNYT5v .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-VMoL7hw94akNYT5v .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-VMoL7hw94akNYT5v .cluster text{fill:#333;}#mermaid-svg-VMoL7hw94akNYT5v .cluster span{color:#333;}#mermaid-svg-VMoL7hw94akNYT5v div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-VMoL7hw94akNYT5v :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是 否 开始 接收订单 检查库存 库存充足? 确认订单 通知库存不足 安排发货 结束 示例 产品发布流程
代码
graph TDA([项目启动]) -- B[需求分析]B -- C[设计系统架构]C -- D[开发]D -- E[测试]E -- F{测试通过?}F --|是| G[部署上线]F --|否| H[修复问题]H -- EG -- I([项目结束])style A fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle I fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle F fill:#FFD2D2,stroke:#333,stroke-width:2px效果图 #mermaid-svg-cTadOqc6OQOAWaNn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-cTadOqc6OQOAWaNn .error-icon{fill:#552222;}#mermaid-svg-cTadOqc6OQOAWaNn .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-cTadOqc6OQOAWaNn .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-cTadOqc6OQOAWaNn .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-cTadOqc6OQOAWaNn .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-cTadOqc6OQOAWaNn .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-cTadOqc6OQOAWaNn .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-cTadOqc6OQOAWaNn .marker{fill:#333333;stroke:#333333;}#mermaid-svg-cTadOqc6OQOAWaNn .marker.cross{stroke:#333333;}#mermaid-svg-cTadOqc6OQOAWaNn svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-cTadOqc6OQOAWaNn .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-cTadOqc6OQOAWaNn .cluster-label text{fill:#333;}#mermaid-svg-cTadOqc6OQOAWaNn .cluster-label span{color:#333;}#mermaid-svg-cTadOqc6OQOAWaNn .label text,#mermaid-svg-cTadOqc6OQOAWaNn span{fill:#333;color:#333;}#mermaid-svg-cTadOqc6OQOAWaNn .node rect,#mermaid-svg-cTadOqc6OQOAWaNn .node circle,#mermaid-svg-cTadOqc6OQOAWaNn .node ellipse,#mermaid-svg-cTadOqc6OQOAWaNn .node polygon,#mermaid-svg-cTadOqc6OQOAWaNn .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-cTadOqc6OQOAWaNn .node .label{text-align:center;}#mermaid-svg-cTadOqc6OQOAWaNn .node.clickable{cursor:pointer;}#mermaid-svg-cTadOqc6OQOAWaNn .arrowheadPath{fill:#333333;}#mermaid-svg-cTadOqc6OQOAWaNn .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-cTadOqc6OQOAWaNn .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-cTadOqc6OQOAWaNn .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-cTadOqc6OQOAWaNn .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-cTadOqc6OQOAWaNn .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-cTadOqc6OQOAWaNn .cluster text{fill:#333;}#mermaid-svg-cTadOqc6OQOAWaNn .cluster span{color:#333;}#mermaid-svg-cTadOqc6OQOAWaNn div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-cTadOqc6OQOAWaNn :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是 否 项目启动 需求分析 设计系统架构 开发 测试 测试通过? 部署上线 修复问题 项目结束 示例有子流程图的流程
代码
graph TD%% 这是准备工作子流程subgraph 准备工作direction LR准备1 -- 检查清单检查清单 -- 确认清单endsubgraph 工作阶段1direction LR阶段1开始 -- 阶段1结束endsubgraph 出发endsubgraph 工作阶段2direction LR阶段2开始 -- 阶段2事情1阶段2事情1 -- 一个事阶段2事情1 -- 另一个事endsubgraph 再次检查direction LR检查开始 -- 检查结束endsubgraph 打道回府direction LR收拾1 -.- 收拾2end开始([开始做事]) -- 准备工作准备工作 -- 工作阶段1工作阶段1 -- 出发出发 -- 工作阶段2工作阶段2 -- 再次检查再次检查 -- 结束([结束做事])%% 虚拟结束([结束做事]) -.- 打道回府%% 虚线style 打道回府 fill:#FFFFF0,stroke-dasharray:5,stroke-width:2px,stroke:#000效果图
graph TD%% 这是准备工作子流程subgraph 准备工作direction LR准备1 -- 检查清单检查清单 -- 确认清单endsubgraph 工作阶段1direction LR阶段1开始 -- 阶段1结束endsubgraph 出发endsubgraph 工作阶段2direction LR阶段2开始 -- 阶段2事情1阶段2事情1 -- 一个事阶段2事情1 -- 另一个事endsubgraph 再次检查direction LR检查开始 -- 检查结束endsubgraph 打道回府direction LR收拾1 -.- 收拾2end开始([开始做事]) -- 准备工作准备工作 -- 工作阶段1工作阶段1 -- 出发出发 -- 工作阶段2工作阶段2 -- 再次检查再次检查 -- 结束([结束做事])%% 虚拟结束([结束做事]) -.- 打道回府%% 虚线style 打道回府 fill:#FFFFF0,stroke-dasharray:5,stroke-width:2px,stroke:#000部分markdown工具正确渲染下面是效果图的截图。
示例有主流程、详细流程的流程
代码
graph TDsubgraph 主要流程A[开始做事] -- B[准备工作]B -- C[工作阶段1]C -- D[工作阶段2]D -- E[结束做事]endsubgraph 准备工作direction RLF[准备1]G[检查清单]H[再次检查清单]endsubgraph 工作阶段1direction RLI[阶段1开始]J[阶段1结束]K[出发]endsubgraph 工作阶段2direction RLL[阶段2开始]M[阶段2事情1]N[一个事]O[另一个事]endsubgraph 结束做事direction RLP[再次检查]Q[收拾1]R[收拾2]endB -- 准备工作C -- 工作阶段1D -- 工作阶段2E -- 结束做事style A fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle B fill:#DAE8FC,stroke:#333,stroke-width:2pxstyle C fill:#DAE8FC,stroke:#333,stroke-width:2pxstyle D fill:#DAE8FC,stroke:#333,stroke-width:2pxstyle E fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle F fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle G fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle H fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle I fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle J fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle K fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle L fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle M fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle N fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle O fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle P fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle Q fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle R fill:#FFF2CC,stroke:#333,stroke-width:2px效果图
graph TDsubgraph 主要流程A[开始做事] -- B[准备工作]B -- C[工作阶段1]C -- D[工作阶段2]D -- E[结束做事]endsubgraph 准备工作direction RLF[准备1]G[检查清单]H[再次检查清单]endsubgraph 工作阶段1direction RLI[阶段1开始]J[阶段1结束]K[出发]endsubgraph 工作阶段2direction RLL[阶段2开始]M[阶段2事情1]N[一个事]O[另一个事]endsubgraph 结束做事direction RLP[再次检查]Q[收拾1]R[收拾2]endB -- 准备工作C -- 工作阶段1D -- 工作阶段2E -- 结束做事style A fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle B fill:#DAE8FC,stroke:#333,stroke-width:2pxstyle C fill:#DAE8FC,stroke:#333,stroke-width:2pxstyle D fill:#DAE8FC,stroke:#333,stroke-width:2pxstyle E fill:#D5E8D4,stroke:#333,stroke-width:2pxstyle F fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle G fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle H fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle I fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle J fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle K fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle L fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle M fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle N fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle O fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle P fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle Q fill:#FFF2CC,stroke:#333,stroke-width:2pxstyle R fill:#FFF2CC,stroke:#333,stroke-width:2px总结
鉴于实践经验少因此画的流程图也少。从上文可以看到有些图的样式不太美观这需再细调。
另外除那个有虚线的图是自己手工绘制外其它均借用AI工具生成。