使用D3.js能否实现流程图数据导出为JSON文件的功能?
D3.js 完全可以实现你的流程图绘制+JSON导出需求
首先给你明确结论:D3.js 完全适配你的开发需求,是做这类自定义可视化工具的合适选型。
- D3的核心设计就是数据驱动视图,你做流程图的过程本质就是维护一份包含「节点列表、节点坐标、节点属性、连线关系、连线属性」的结构化数据,D3可以直接把这份数据和画布上的图形元素做双向绑定,你在前端操作流程图(拖拽节点、新增连线、修改节点属性)的时候只需要同步更新这份底层数据即可,不需要自己额外写大量数据和视图同步的逻辑。
- 流程图需要的基础交互能力D3都有原生API支持:
d3-drag实现节点自由拖拽,d3-zoom实现整个画布的缩放、平移,d3-shape可以自定义连线的拐点、曲率等样式,基础交互不需要你重复造轮子。 - 导出JSON的逻辑非常简单:你维护的那份流程图核心数据本身就是标准JS对象/数组结构,导出的时候只需要调用
JSON.stringify()把数据序列化,再通过前端创建临时下载链接的方式触发文件下载即可,核心实现代码不到10行,不需要依赖任何额外服务。
新手入门提示
如果你刚接触JS,直接从零用原生D3写全量流程图交互门槛稍高,可以先基于D3封装的专用流程图开发组件上手,核心底层还是D3的能力,导出JSON的需求也完全支持,等熟悉整体逻辑后再做深度定制即可。
开发的时候记住一个核心原则:所有流程图的状态优先存在内存的JSON结构里,再通过D3把数据渲染到页面,不要先操作DOM再反过来从DOM里提取数据,这样你需要导出JSON的时候直接拿你维护的这份核心数据就行,不会出现数据和视图不一致的问题。
内容的提问来源于stack exchange,提问作者Akhil Garg
相关产品推荐
相关产品推荐

