在现代前端开发中,流程图的使用愈加广泛。无论是开发组态图、思维导图还是拓扑图,良好的可视化工具都能帮助我们更好地理解项目、组织思路并简化沟通。本文将介绍11个必备的前端流程图框架,并给出一些代码示例。

1. Mermaid

Mermaid 是一个基于文本的图表生成工具,支持各种图表的创建,包括流程图、序列图、甘特图等。你可以在 Markdown 文档中直接嵌入 Mermaid 语法。

<script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.js';
  mermaid.initialize({ startOnLoad: true });
</script>

<div class="mermaid">
  graph TD;
    A[开始] --> B{是否继续};
    B -- 是 --> C[继续];
    B -- 否 --> D[结束];
</div>

2. Drawflow

Drawflow 是一个轻量级的流程图框架,适用于创建动态工作流和可视化 UI。它支持节点可视化和连线功能。

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/drawflow/dist/drawflow.min.css">
<script src="https://cdn.jsdelivr.net/npm/drawflow/dist/drawflow.min.js"></script>

<div id="drawflow" style="width: 800px; height: 600px;"></div>
<script>
  const container = document.getElementById('drawflow');
  const drawflow = new Drawflow(container);
  drawflow.start();
  drawflow.addNode('起始','start','node-start',150,100);
</script>

3. JointJS

JointJS 是一个功能强大的 JavaScript 库,适用于构建交互式图表和流程图。它支持丰富的图形元素和事件。

<script src="https://cdnjs.cloudflare.com/ajax/libs/joint/3.3.1/joint.min.js"></script>

<div id="paper" style="width: 600px; height: 400px;"></div>
<script>
  var graph = new joint.dia.Graph();
  var paper = new joint.ui.Paper({
    el: document.getElementById('paper'),
    model: graph,
    width: 600,
    height: 400,
    gridSize: 1
  });

  var rect = new joint.shapes.standard.Rectangle();
  rect.position(100, 30);
  rect.resize(100, 40);
  rect.attr({ body: { fill: 'blue' }, label: { text: '开始', fill: 'white' } });
  rect.addTo(graph);
</script>

4. D3.js

D3.js 是一个非常强大的数据可视化库,能够生成高度定制化的图表。虽然需要一些配置,但灵活性极大。

<script src="https://d3js.org/d3.v7.min.js"></script>
<svg width="600" height="400"></svg>
<script>
  const svg = d3.select("svg");
  const data = [{x: 10, y: 20}, {x: 80, y: 90}];

  svg.selectAll("circle")
    .data(data)
    .enter()
    .append("circle")
    .attr("cx", d => d.x)
    .attr("cy", d => d.y)
    .attr("r", 5)
    .attr("fill", "red");
</script>

5. GoJS

GoJS 是一个强大的 JavaScript 图形库,专注于图表和流程图的创建。它适用于复杂的交互和大量数据。

<script src="https://unpkg.com/gojs/release/go.js"></script>
<div id="myDiagram" style="width: 600px; height: 400px;"></div>
<script>
  const $ = go.GraphObject.make;
  const diagram = $(go.Diagram, "myDiagram");

  diagram.nodeTemplate =
    $(go.Node, "Auto",
      $(go.Shape, "Rectangle", { fill: "lightblue" }),
      $(go.TextBlock, { margin: 10 }, new go.Binding("text"))
    );

  diagram.model = new go.GraphLinksModel([{ key: 1, text: "开始" }, { key: 2, text: "结束" }]);
</script>

6. Vis.js

Vis.js 是一个数据可视化库,支持网络图、时间线等多种图表。它易于使用,并且具有良好的交互性。

<script src="https://unpkg.com/vis-network/standalone/vis-network.min.js"></script>
<div id="mynetwork" style="width: 600px; height: 400px;"></div>
<script>
  const nodes = new vis.DataSet([
    { id: 1, label: '开始' },
    { id: 2, label: '结束' }
  ]);
  const edges = new vis.DataSet([{ from: 1, to: 2 }]);

  const container = document.getElementById('mynetwork');
  const data = { nodes, edges };
  const options = {};
  const network = new vis.Network(container, data, options);
</script>

7. jsPlumb

jsPlumb 是一个专为创建流程图、工作流图和连线布局而设计的库。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jsplumb/2.15.6/jsplumb.min.js"></script>
<div id="container" style="width:600px; height:400px;"></div>
<div id="item1" class="item" style="width:100px; height:100px;">开始</div>
<div id="item2" class="item" style="width:100px; height:100px;">结束</div>
<script>
  jsPlumb.ready(function() {
    const instance = jsPlumb.createInstance({ Container: "container" });
    instance.addEndpoint("item1", { anchors: ["Bottom"], isSource: true }, { uuid: "item1toitem2" });
    instance.addEndpoint("item2", { anchors: ["Top"], isTarget: true });
    instance.connect({ source: "item1", target: "item2", overlays: [["Arrow", { width: 10, length: 10, location: 1 }]] });
  });
</script>

8. ECharts

ECharts 是一个开源的图表库,支持丰富的图表类型,包括流程图,强大的交互和定制能力。

<script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
<div id="main" style="width: 600px; height: 400px;"></div>
<script>
 var myChart = echarts.init(document.getElementById('main'));
 var option = {
   series: [{
     type: 'graph',
     layout: 'none',
     data: [{ name: '开始' }, { name: '结束' }],
     links: [{ source: '开始', target: '结束' }]
   }]
 };
 myChart.setOption(option);
</script>

9. Cytoscape.js

Cytoscape.js 是面向图形和图表的 JavaScript 库,支持复杂的网络和图形显示。

<script src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.21.6/cytoscape.min.js"></script>
<div id="cy" style="width: 600px; height: 400px;"></div>
<script>
  var cy = cytoscape({
    container: document.getElementById('cy'),
    elements: [
      { data: { id: 'a', label: '开始' } },
      { data: { id: 'b', label: '结束' } },
      { data: { id: 'ab', source: 'a', target: 'b' } }
    ],
    style: [{ selector: 'node', style: { 'background-color': '#666' } }],
    layout: { name: 'grid' }
  });
</script>

10. Diagram.js

Diagram.js 是一个轻便的库,专注于创建简单的流程图和语义图。

<script src="https://unpkg.com/draw-js/dist/draw.js"></script>
<div id="diagram" style="width: 600px; height: 400px;"></div>
<script>
  const diagram = new Drawjs.Diagram({ container: document.getElementById('diagram') });
  diagram.addNode('开始', { x: 50, y: 50 });
  diagram.addNode('结束', { x: 150, y: 150 });
  diagram.addLink('开始', '结束');
</script>

11. Rough.js

Rough.js 是一个用于创建草图风格图形的库,非常适合那些需要手绘风格的流程图。

<script src="https://unpkg.com/roughjs/bundled/rough.esm.js"></script>
<div id="canvas" style="width: 600px; height: 400px;"></div>
<script>
  const rc = rough.canvas(document.getElementById('canvas'));
  rc.rectangle(50, 50, 100, 50);
  rc.line(100, 50, 100, 150);
  rc.rectangle(50, 150, 100, 50);
</script>

结语

以上11个前端流程图框架,各具特性,可广泛应用于开发组态图、思维导图及拓扑图的制作。根据项目需求的不同,可以选择适合的工具来提高工作效率,实现良好的可视化效果。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部