如何提高具有多个链接的 JointJS 的性能?

How do I improve performance of JointJS with many links?

分析代码后,似乎重复调用了 bbox 函数。我无法删除标记源、标记目标和连接包装,因为我需要这些功能。有没有办法提高性能?

尝试将 marker-sourcemarker-target 替换为 SVG Markers。如果您的应用程序不需要不同大小和颜色的标记,则实现起来相对容易。例如:

  1. 定义你自己的标记箭头。
var arrowMarker = V('marker', {
   viewBox: "0 0 10 10",
   refX: 9,
   refY: 5,
   markerWidth: 6,
   markerHeight: 6,
   orient: "auto"
}, [
   V('path', {
       'd': "M 0 0 L 10 5 L 0 10 z",
       'fill': 'green'
   })
]);
  1. 将标记添加到纸张的 SVG Defs 以便以后可以多次重复使用。
V(paper.defs).append(arrowMarker);
  1. 终于把记号笔放在link上了。使用 marker-end or marker-start 属性 分别定义 targetsource 标记。
var link = new joint.dia.Link({
    markup: '<path class="connection"/><path class="connection-wrap"/>',
    attrs: {
        '.connection': {
            'stroke': 'green',
            'stroke-width': 2,
            'marker-end': 'url(#' + arrowMarker.attr('id') + ')'
        }
    }
});

有一个 JSFiddle,其中包含示例和其他有用的性能提示。