Topology - 可视化在线绘图引擎


MIT
跨平台
JavaScript

软件简介

Topology 是基于 typescript + canvas 实现的在线绘图的引擎。采用引擎 +
图形库中间件的思路能够方便、快速的扩展、集成到前端项目。

配合VS Code插件一起使用

在vs code插件列表里搜索:le5le topology,或le5le-topology-plugin

查看插件

特性包括易扩展、方便集成等,可用于:

  • 微服务架构图
  • 拓扑图
  • 流程图/活动图/时序图/类图
  • 思维导图/脑图
  • 动画
  • 音频/视频

  • 开源

  • 可定制化
  • 轻量(100k左右),功能却很丰富
  • 简单易用,方便集成
  • 较好的性能,非常流畅
  • 方便的数据导入导出
  • 图片保存/预览
  • typescript + canvas

未来规划:

加入3D功能,全面、充分的可以实现智慧城市的3D可视化、SCADA 3D效果、物联网3D装配效果、安防等3D可视化场景。

为什么重复造轮子

  • 笔者工作中遇到比较多的微服务架构、云资源运维、部署与运维可视化方面的需求
  • 开源、满足自己需求的不多
  • typescript + 纯粹canvas架构的不多
  • 以中间件方式可定制满足不同场景的不多
  • 动画支持
  • 音视频支持,满足安防、物联网(暂无3D效果)等实时监控需求

架构设计

主要由:层、节点、连线和箭头等组成。

层:

这里的层,主要是为了提升性能的逻辑层;与类似ps里面的用户图层无关。

离屏层 :包含所有绘图数据,是最稳定的图层。

选中层 :用户选中部分或全部节点/连线的高亮图层,并设置相关属性、缩放、和旋转等。

动画层 :主要用于演示动画。

活动层 :主要用于箭头鼠标交互事件,比如锚点和连线过程。

节点:

是画布的主要组成部分,节点内部还可以包含图标或文字。

连线和箭头:

连线和箭头是关联在一起的。连线两端可以选择设置或不设置箭头。

节点可以通过控制点进行整体缩放、旋转。

连线只表示节点描点间的连线,不存在缩放、旋转。节点缩放或旋转会造成控制点的重计算。连线形状可以由线的控制点改变。

绘画与属性

节点和连线各种有自身的绘画属性,同时还可以设置一个附加的自定义数据

快速集成使用

es6使用示例:

github.com/le5le-
com/t…

typescript使用示例:

github.com/le5le-
com/t…

vue使用示例:

https://github.com/le5le-com/topology-vue

react使用示例:

https://github.com/le5le-com/topology-react