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使用示例: