需求:运行监控图模块,模块之间用虚线或者实线连接,且带有箭头
实现方法:
1、canvas绘制
2、echarts专业的表格软件(画带箭头的虚线有难度)
3、svg方法
4、leader-line插件
5、背景图
难点:屏幕缩放时保证相对位置精确,这就需要以一个屏幕的宽高为基准进行比例计算,把其它元素的left和top值转化为百分比,并调节数值,使元素和背景图上线条的位置达到需要的效果
文档相当详细,支持虚线、线条粗细、箭头、线性等的配置,就是不支持90度折线的圆角设置,于是在项目中使用了leader-line来划线
我的做法是在页面mounted时根据配置好的数据渲染线条,然后将线条对象存到store里,beforeDestroy时调用hide()方法隐藏,下次进入页面时就只需要调用show()方法显示就行,避免过多的渲染。当然也可以离开页面前调用remove()方法移除线条对象,下次进来再重新渲染,都是可以的。
注意点:渲染线条实例时需要获取dom结构,所以要等页面渲染完成后再调用绘制函数,最好在nextTick后再加个500ms的延时,确保需要的dom结构完全渲染完成,我之前没加就导致绘制了却无法显示的问题。