
赛博算命 Skill
赛博算命 Skill是基于 Claude Code 的八字排盘与命理分析工具。通过交互式对话收集出生信息,排出四柱八字,参照九本经典命理典籍进行专业分析。
原生 HTML5 Canvas API 虽然强大,但在处理复杂交互、动画和对象管理时往往显得笨重且难以维护。Konva 是一个基于 Canvas 的高性能 JavaScript 框架,它引入了场景图(Scene Graph)的概念,让你能够像操作 DOM 元素一样操作图形对象。

无论是构建复杂的在线设计工具、动态数据图表,还是高性能的游戏界面,Konva 都能以极简的代码实现丰富的交互效果,即使面对数千个形状也能保持流畅的帧率。
Stage、Layer、Group 和 Shape 等对象,支持嵌套结构,逻辑清晰。click、dragstart、mouseover 等事件,让静态图形“活”起来。canvas 或 skia-canvas 后端,可在服务器端生成图片,适用于 SSR 或自动化截图场景。通过 npm 安装(推荐):
npm install konva --save
或通过 CDN 引入:
<script src="https://unpkg.com/konva@10.0.0-1/konva.min.js"></script>
import Konva from 'konva';
// 创建舞台
const stage = new Konva.Stage({
container: 'container', // DOM 元素 ID
width: window.innerWidth,
height: window.innerHeight,
});
// 创建图层
const layer = new Konva.Layer();
stage.add(layer);
// 创建一个矩形
const rect = new Konva.Rect({
x: 100,
y: 100,
width: 100,
height: 50,
fill: 'red',
stroke: 'black',
strokeWidth: 4,
draggable: true, // 启用拖拽
});
// 添加到图层
layer.add(rect);
// 添加点击事件
rect.on('click', () => {
rect.fill(rect.fill() === 'red' ? 'blue' : 'red');
layer.batchDraw(); // 批量重绘以提升性能
});
// 绘制图层
layer.draw();
如果你只使用核心功能,可以按需导入以减小 bundle 大小:
import Konva from 'konva/lib/Core';
import { Rect } from 'konva/lib/shapes/Rect';
// 手动注册形状
Konva.Rect = Rect;
const rect = new Konva.Rect({ ... });
在服务器端生成图片时,需安装后端依赖:
npm install konva canvas
import Konva from 'konva';
import 'konva/canvas-backend'; // 引入 Node 后端
const stage = new Konva.Stage({
width: 500,
height: 500,
// 注意:Node 环境下不需要 container
});
// ... 执行绘图操作 ...
// 导出为图片
const dataURL = stage.toDataURL();
由于 Canvas 是像素绘制,浏览器开发者工具无法直接查看内部对象。建议安装 konva-dev Chrome 扩展程序,它可以直观地显示 Konva 对象树、属性及层级关系,极大提升调试效率。







