8000 GitHub - shalles/web-mind: web 版思维导图工具【AI 生成】
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

shalles/web-mind

Repository files navigation

WebXmind - 网页版思维导图工具

产品图

基于React + TypeScript + Vite + Zustand开发的网页版思维导图工具,支持节点编辑、样式调整、关系连线、节点引用、背景设置等功能。

项目概述

WebXmind是一款轻量级网页思维导图工具,无需安装,即开即用。它支持直观的拖拽操作、快捷键控制,提供了丰富的思维导图编辑功能,适合用于学习规划、知识整理、项目管理等场景。

功能特性

基础功能

  • 节点的添加、删除、编辑
  • 左右布局支持
  • 节点展开/折叠
  • 缩放和平移
  • 撤销/重做
  • 导出PNG图片
  • 保存与加载思维导图

高级功能

  • 节点样式设置:自定义节点背景色、文字颜色
  • 节点备注:支持为节点添加备注信息
  • 节点图标:支持为节点添加各种图标
  • 节点图片:支持为节点添加图片
  • 关系连线:创建任意两个节点之间的自定义关系连线,可设置线条样式和关系描述
  • 节点引用:支持节点引用功能,一个节点可在不同位置被引用,保持数据同步
  • 背景设置:支持设置思维导图背景,包括纯色背景和图片背景
    • 可调整背景不透明度
    • 支持本地图片上传和网络图片URL
    • 背景设置会自动保存到本地数据库
    • 支持通过JSON导出导入,完整保留背景设置
  • 模板功能:支持将思维导图保存为模板,并从模板快速创建
    • 背景设置也会被保存到模板中并在创建时应用
  • JSON导入导出:支持以JSON格式导入导出思维导图数据
    • 导出的JSON包含完整数据,包括节点、关系连线和背景设置

数据存储

  • 使用IndexedDB本地存储思维导图
  • 支持多个思维导图的管理
  • 模板库存储
  • 完整保存背景设置信息

快捷键

文件操作

  • Ctrl+N: 新建空白思维导图
  • Ctrl+S: 保存当前思维导图
  • Ctrl+Shift+E: 导出为JSON
  • Ctrl+Shift+O: 导入JSON
  • Ctrl+P: 导出为图片
  • Ctrl+T: 从模板创建
  • Ctrl+Shift+S: 保存为模板
  • Ctrl+M: 打开文件菜单

节点操作

  • Tab: 添加子节点
  • Shift+Tab: 添加兄弟节点
  • Delete/Backspace: 删除节点
  • Ctrl+E/F2: 编辑节点
  • Ctrl+B: 打开节点背景色选择器
  • Ctrl+C: 打开节点文字颜色选择器(当没有文本选中时)

编辑操作

  • Ctrl+Z: 撤销
  • Ctrl+Y/Ctrl+Shift+Z: 重做
  • Ctrl++: 放大
  • Ctrl+-: 缩小

技术栈

  • 前端框架: React 18
  • 语言: TypeScript
  • 构建工具: Vite
  • UI库: Ant Design
  • 样式: Styled Components
  • 状态管理: Zustand
  • 数据存储: IndexedDB
  • 图形渲染: SVG
  • 图片导出: html2canvas

开发指南

环境要求

  • Node.js 14.0+
  • npm 7.0+ 或 yarn 1.22+

安装依赖

# 使用npm
npm install

# 或使用yarn
yarn install

启动开发服务器

# 使用npm
npm run dev

# 或使用yarn
yarn dev

应用将会在 http://localhost:5173 运行

调试功能

WebXmind内置了一些调试工具,可通过以下快捷键开启:

  • F12+Shift: 开启/关闭键盘事件调试(在控制台查看键盘事件日志)
  • F12+Ctrl: 开启/关闭快捷键调试(在控制台查看快捷键详细信息)
  • F12+Alt: 开启/关闭模板功能调试

开启调试模式后,界面右下角会出现调试按钮,可以测试节点添加和吸附功能。

构建生产版本

# 使用npm
npm run build

# 或使用yarn
yarn build

构建后的文件将生成在 dist 目录中,可直接部署到任何静态文件服务器。

项目结构

src/
├─ components/     # 组件
│  ├─ MindMap/     # 思维导图相关组件
│  │  ├─ index.tsx         # 主组件
│  │  ├─ Node.tsx          # 节点组件 
│  │  ├─ Connection.tsx    # 连接线组件
│  │  ├─ RelationshipLine.tsx  # 关系连线组件
│  │  ├─ NodeMenu.tsx      # 节点菜单组件
│  │  ├─ NodeReferenceMenu.tsx # 节点引用菜单
│  │  ├─ SimpleNode.tsx    # 简化节点组件
│  │  └─ NodeDragLayer.tsx # 节点拖拽层
│  ├─ Toolbar/     # 工具栏组件
│  └─ Sidebar/     # 侧边栏组件
├─ core/           # 核心逻辑
│  ├─ models/      # 数据模型
│  │  └─ mindmap.ts  # 思维导图模型
│  ├─ operations/  # 操作函数
│  │  └─ node-operations.ts # 节点操作函数
│  ├─ layouts/     # 布局算法
│  │  └─ mindmap-layout.ts # 思维导图布局算法
│  └─ utils/       # 工具函数
│     └─ drag-utils.ts # 拖拽相关工具函数
├─ store/          # 状态管理
│  └─ index.ts     # Zustand状态库
├─ types/          # 类型定义
│  └─ mindmap.d.ts # 思维导图类型定义
└─ styles/         # 全局样式
   ├─ global.ts    # 全局样式
   └─ mindmap.css  # 思维导图样式

功能演示

基本操作

  • 单击节点选中,Ctrl+单击可以多选
  • 双击节点可以编辑内容
  • 拖拽节点可以改变位置
  • 拖拽节点靠近其他节点时会有吸附效果,释放后将成为其子节点
  • 鼠标滚轮可以缩放视图,按住鼠标拖拽背景可以平移视图

背景设置

  1. 点击工具栏中的背景图标打开背景设置
  2. 选择纯色背景或图片背景
  3. 纯色背景可以选择颜色,图片背景可以输入URL或上传本地图片
  4. 调整不透明度
  5. 点击确定应用设置

模板功能

  1. 使用Ctrl+Shift+S保存当前思维导图为模板
  2. 使用Ctrl+T从已保存的模板创建新思维导图
  3. 可以管理模板,包括删除不需要的模板

贡献指南

我们欢迎任何形式的贡献,无论是新功能、bug修复、文档改进还是UI优化。

贡献流程

  1. 本项目用于练习使用 AI Code 工具,所有内容完全由 AI 生成,不接收 MR

代码规范

  • 遵循TypeScript和React的最佳实践
  • 使用ESLint和Prettier保持代码风格一致
  • 组件使用函数式组件和React Hooks
  • 保持代码简洁、注释清晰

最近更新

最新功能

  • 背景设置功能:支持纯色背景和图片背景
  • 本地图片上传功能
  • 背景设置信息本地缓存支持
  • 背景设置信息JSON导出导入支持
  • 背景设置信息模板保存和应用
  • 快捷键系统优化:统一使用Ctrl键
  • 修复了文件操作快捷键无响应问题
  • 优化了节点编辑和拖拽交互

下一步计划

  • 优化布局算法
  • 添加主题支持
  • 增加多画布管理
  • 添加协作功能
  • 云端存储支持
  • 添加更多导出格式
  • 移动端适配

许可证

MIT

About

web 版思维导图工具【AI 生成】

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0