阳江市网站建设_网站建设公司_原型设计_seo优化
2025/12/21 15:30:54 网站建设 项目流程

知识图谱技术栈



核心可视化库

D3.js 7.9.0
d3.forceSimulation - 力导向图模拟(用于链接布局)
d3.select - DOM 选择与操作
d3.drag - 节点拖拽交互
d3.zoom - 画布缩放与平移
d3.forceLink - 链接力计算
d3.pointer - 鼠标坐标转换
SVG 路径绘制(链接曲线)

前端框架

React 19.2.3
函数组件
React Hooks:
useState - 状态管理(选中节点、悬停状态、拖拽状态等)
useRef - DOM 引用(SVG、容器、模拟器引用)
useMemo - 节点和链接数据缓存
useEffect - 副作用处理(D3 渲染、事件监听)

类型系统

TypeScript 5.8.2
类型定义(KnowledgeMapNode、KnowledgeMapLink、KnowledgeMapProps)
类型安全

渲染技术

SVG(Scalable Vector Graphics)
节点渲染(圆形、文本、图标)
链接渲染(贝塞尔曲线路径)
SVG 滤镜(发光效果)
事件处理(点击、悬停、拖拽)

交互功能实现

节点拖拽:d3.drag() + React 状态更新
画布缩放:d3.zoom() + 变换矩阵
链接创建:鼠标事件 + 坐标计算
节点定位:静态定位(fx/fy)+ 随机分布算法

样式与动画

Tailwind CSS(通过 className)
CSS 过渡动画(transition-all duration-300)
SVG 滤镜(feGaussianBlur 发光效果)

数据流

Material[] (React Props) ↓useMemo 转换为 KnowledgeMapNode[] ↓D3.js 数据绑定 (data join) ↓SVG 元素渲染 ↓用户交互事件 ↓React 状态更新 ↓重新渲染
关键特性
静态节点模式:节点位置固定(fx/fy),不使用力导向动画
手动链接:支持拖拽创建节点间链接
双击添加节点:空白处双击创建新节点
可视化节点:特殊样式(金色)和图标(✨)

总结:

采用 D3.js + React + TypeScript + SVG 的组合,D3 负责图形渲染与交互,React 负责组件化与状态管理。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询