《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个蚂蚁体验科技开源的图编辑引擎——X6。

地图制图开源库(开源图编辑引擎X6)(1)

X6 是 AntV 旗下的图编辑引擎,提供了一系列开箱即用的交互组件和简单易用的节点定制能力,方便我们快速搭建 DAG 图、ER 图、流程图等应用。

功能特性安装X6

通过 npm 或 yarn 命令安装 X6。

# npm $ npm install @antv/x6 --save # yarn $ yarn add @antv/x6

安装完成之后,使用 import 或 require 进行引用。

import { Graph } from '@antv/x6';

如果是直接通过 script 标签引入,可以使用下面三个 CDN 中的任何一个,默认返回 X6 的最新版:

<script src="https://unpkg.com/@antv/x6/dist/x6.js"></script>

对于生产环境,我们推荐使用一个明确的版本号,以避免新版本造成的不可预期的破坏:

<script src="https://unpkg.com/@antv/x6@1.1.1/dist/x6.js"></script>

使用X6

1 创建容器

在页面中创建一个用于容纳 X6 绘图的容器,可以是一个 div 标签。

<div id="container"></div>

2 准备数据

X6 支持 JSON 格式数据,该对象中需要有节点 nodes 和边 edges 字段,分别用数组表示:

const data = { // 节点 nodes: [ { id: 'node1', // String,可选,节点的唯一标识 x: 40, // Number,必选,节点位置的 x 值 y: 40, // Number,必选,节点位置的 y 值 width: 80, // Number,可选,节点大小的 width 值 height: 40, // Number,可选,节点大小的 height 值 label: 'hello', // String,节点标签 }, { id: 'node2', // String,节点的唯一标识 x: 160, // Number,必选,节点位置的 x 值 y: 180, // Number,必选,节点位置的 y 值 width: 80, // Number,可选,节点大小的 width 值 height: 40, // Number,可选,节点大小的 height 值 label: 'world', // String,节点标签 }, ], // 边 edges: [ { source: 'node1', // String,必须,起始节点 id target: 'node2', // String,必须,目标节点 id }, ], };

3 渲染画布

首先,我们需要创建一个 Graph 对象,并为其指定一个页面上的绘图容器,通常也会指定画布的大小。

import { Graph } from '@antv/x6'; // 使用 CDN 引入时暴露了 X6 全局变量 // const { Graph } = X6 const graph = new Graph({ container: document.getElementById('container'), width: 800, height: 600, });

如果是通过 script 标签引入方式,我们的 Graph 对象是挂载在 X6 这个全局变量下面:

<script src="https://unpkg.com/@antv/x6/dist/x6.js"></script> <script> const graph = new X6.Graph({ container: document.getElementById('container'), width: 800, height: 600, }); </script>

然后,我们就可以使用刚刚创建的 graph 来渲染我们的节点和边。

graph.fromJSON(data)

到此,我们就得到一个最简单的 Hello --> World 示例:

地图制图开源库(开源图编辑引擎X6)(2)

4 背景和网格

接下来,我们来给画布设置一个背景颜色和网格,另外还支持背景图片、网格类型等配置

import { Graph } from '@antv/x6'; const graph = new Graph({ container: document.getElementById('container'), width: 800, height: 600, background: { color: '#fffbe6', // 设置画布背景颜色 }, grid: { size: 10, // 网格大小 10px visible: true, // 渲染网格背景 }, });

地图制图开源库(开源图编辑引擎X6)(3)

图表示例

地图制图开源库(开源图编辑引擎X6)(4)

流程图

地图制图开源库(开源图编辑引擎X6)(5)

人工智能建模DAG图

地图制图开源库(开源图编辑引擎X6)(6)

ER图

地图制图开源库(开源图编辑引擎X6)(7)

思维导图

地图制图开源库(开源图编辑引擎X6)(8)

BPMN

地图制图开源库(开源图编辑引擎X6)(9)

泳道图

地图制图开源库(开源图编辑引擎X6)(10)

ELK

地图制图开源库(开源图编辑引擎X6)(11)

组织架构图

地图制图开源库(开源图编辑引擎X6)(12)

UML类图

地图制图开源库(开源图编辑引擎X6)(13)

展开/折叠树

—END—

开源协议:MIT

开源地址:https://github.com/antvis/X6

,