配置指南
自定义节点
使用统一 register 和函数式 NodeExtension 扩展节点表现形式
G6Lite 推荐通过统一的 register() 注册函数式节点扩展,不要求继承引擎内部基类。
import { register, type NodeExtension } from '@antv/g6-lite';
const statusNode: NodeExtension = {
base: 'rect',
style: { width: 96, height: 34, borderRadius: 8 },
getStyle(node) {
return node.data?.status === 'error'
? { fill: '#fff2f0', stroke: '#ff4d4f' }
: { fill: '#e6f4ff', stroke: '#1677ff' };
},
};
register('node', 'status-node', statusNode);适用场景
- 需要复用一类业务节点视觉。
- 需要在 WebGL 节点之外增加轻量 overlay。
- 需要对节点样式或动画做统一封装。
内置扩展
breathing-node 已由 G6Lite 内置注册,可以直接在配置中使用:
const graph = new Graph({
node: { type: 'breathing-node' },
});具体可参考:
src/extensions/node.tsplayground/demos/breathing-node.ts
注意事项
- 自定义节点应避免破坏 WebGL 批量渲染优势。
- 大图中不要给所有节点叠加昂贵的自定义绘制。
- 如果只是颜色、尺寸、描边、标签变化,优先使用
node.style和stateStyles。 BaseNode与registerNode仅用于 beta 兼容,新增扩展应使用register('node', ...)。
更多类型见 API 总览。