想实现类似“博思白板”的思维导图效果,本来想找一些现有的“mind”vue组件,但是又有比较强的定制化要求,如:
节点并非“简单”的效果,如:文本,图片等,我们需要定制化,放一些业务数据上去,所以节点要能定制化(这一点比较重要,展示的数据比较直观),找了很多组件,都是“节点”比较简单,所以大概率需要自己实现了,因为之前接触过jsPlumb(简单理解为dom节点连线组件);
自己写的话就会遇到如下问题:
1、节点自动生成定位坐标,需要考虑哪些问题;
2、添加子节点后,原有的节点树的布局(同一节点下,插入一个子节点,其他子节点的位置也需要重新计算,这个算法是否有一些常规的,不需要自己去考虑各种场景);
3、还有在线协同功能,不过这个主要是在全部功能实现完成的基础上来做的,这是第二阶段吧;
主要现在时间有限,如果选错了方向,就没时间回头了,请大佬们提供一些宝贵的意见,谢谢!!
“博思白板”效果,如下:
就用D3.js可以,d3js可以满足你的上面说的定位坐标D3.js的力导向图布局自动处理,不用你手动计算,加新节点时候,D3会自动重新计算整个图的布局,协同的话基本上都是用WebSocket实时同步节点数据和位置的:
更新这个版本可以节点自由拖拽、可以改节点父子关系:
初始版本: