JavaScript is required

渲染系统

本页对应英文版 Rendering System,用于说明 relation-graph 如何把运行时图数据转换为实际可见的节点、连线、文本和交互层,并在不同渲染模式间切换。

渲染架构概览

  • 渲染系统以统一数据模型为输入。
  • 根据当前模式选择 SVG / DOM 或 Canvas / EasyView 等不同渲染方式。
  • 节点、连线、文字、连接点、编辑层和辅助层会在统一坐标系下协同工作。

渲染模式

标准 SVG / DOM 渲染

  • 适合普通图和需要高度可定制插槽的场景。
  • 优点是结构清晰、便于调试和样式定制。

EasyView / Canvas 模式

  • 适合节点和连线数量较多的大图。
  • 通过减少 DOM 数量提升渲染性能。

组件层级

  • 顶层图组件负责组织整体结构。
  • RGCanvas 及其子层负责绘制图内容。
  • 节点、连线、文字、连接点、工具栏、小地图和编辑控制器按层组合。

渲染流水线

  1. 从 provider 读取当前图数据
  2. 结合布局结果和视图变换计算坐标
  3. 决定当前需要渲染的节点与连线
  4. 分发到对应渲染层
  5. 挂载事件与交互辅助元素

节点与连线渲染

  • 节点渲染负责节点主体、插槽内容、尺寸与交互区域。
  • 连线渲染负责路径、连接点、箭头、文本、控制点与多线偏移。

多层渲染系统

  • 背景层
  • 图内容层
  • 插槽层
  • 编辑辅助层
  • 顶层浮动交互层

这种分层方式能减少复杂交互时的相互干扰。

视口裁剪与性能

  • 大图场景下会优先结合可见性判断只渲染当前需要显示的元素。
  • 这是标准模式与性能模式都依赖的重要能力。

平台实现

  • Vue、React、Svelte 与 Web Components 的渲染外壳不同。
  • 但节点、连线、插槽与交互层的语义尽量保持一致。

相关文档