Show HN:Angular 中的可视化架构图构建器,包含 47+ 组件

发布: (2025年12月6日 GMT+8 01:58)
3 min read
原文: Dev.to

Source: Dev.to

创建了一个开源的 Angular 组件,用于构建架构图。

功能

  • 47+ 预制组件(AWS、Azure、AI/ML 工具等)
  • 拖拽界面,支持智能分组和连接
  • 导出为 PNG、JSON(以及 SVG)
  • 快捷键编辑,提高效率
  • 离线支持并自动保存
  • 颜色编码的层级结构用于嵌套分组
  • 自由手绘笔工具、基本形状、文本注释
  • 可自定义描边、填充和透明度
  • 可复用的模板模式

安装

npm install konva-architecture-canvas konva

快速使用

import { Component } from '@angular/core';
import { KonvaCanvasMainComponent } from 'konva-architecture-canvas';

@Component({
  selector: 'app-diagram',
  standalone: true,
  imports: [KonvaCanvasMainComponent],
  template: `
    
    
  `
})
export class DiagramComponent {}

该组件提供:

  • 左侧边栏,包含全部 47+ 组件
  • 绘图工具栏
  • 颜色/样式面板
  • 缩放/平移控制
  • 快捷键(见下方)

快捷键

快捷键操作
Cmd+G对选中项进行分组
Cmd+Z撤销
Cmd+Shift+Z重做
V, R, C, L, A切换工具(选择、矩形、圆形、直线、箭头)
Space + Drag平移画布
Delete删除选中项

分组着色(按嵌套深度)

function getGroupColor(level: number): string {
  const colors = ['#9b59b6', '#e74c3c', '#f39c12', '#27ae60', '#3498db'];
  return colors[level % colors.length];
}

导出高分辨率 PNG

exportToPNG(scale: number = 2): void {
  const dataURL = this.stage.toDataURL({
    pixelRatio: scale,
    mimeType: 'image/png',
    quality: 1.0
  });
  this.downloadImage(dataURL);
}

动态图标加载与缓存

private iconCache = new Map();

async loadIcon(name: string): Promise {
  return this.iconCache.get(name) ?? await this.fetchAndCache(name);
}

使用场景

  • 可视化 RAG 聊天机器人(如 GPT‑4、Pinecone、API Gateway)
  • 按业务域组织服务并分组
  • 快速构建 AWS/Azure/GCP 架构
  • 在技术面试中快速绘制方案

对比概览

功能Konva CanvasDraw.io
技术栈Angular 组件、Konva.js、TypeScript、RxJSWeb 应用(无框架)
内置组件47+(云与 AI/ML)手动搜索
侧重点云与 AI/ML通用用途
快捷键开发者友好有限
导出格式PNG、JSON、SVG多种格式
许可证MIT各种(专有)
集成方式npm 包、iframe 嵌入独立运行

性能

  • 初始加载:约 2–3 秒(图标加载)
  • 拖拽/缩放 60 FPS,支持 50+ 组件
  • 包体大小:约 680 KB(gzip)
  • 内存占用:典型图表约 50 MB

路线图(计划中)

  • 实时协作
  • 云同步
  • VS Code 插件
  • 导出为 Terraform/CDK
  • AI 驱动的自动布局
  • 自定义组件创建器

演示与资源

  • 在线演示:
  • npm: npm install konva-architecture-canvas
  • GitHub:

欢迎分享反馈:

  • 您希望有哪些功能?
  • 需要添加哪些云服务?
  • 有任何 bug 或问题吗?

如果觉得有用,欢迎在 GitHub 上点星! ⭐

Back to Blog

相关文章

阅读更多 »

Angular pipes:重新思考

Forem 社区 Forem !Forem 徽标 https://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3...