MindLet
项目由来
用过很多思维导图软件, 但是没有软件渲染导图就没法编辑
markdown能轻松排版文档, 但是文档内部的跳转写起来比较麻烦(需要手动写html)
这个东西大概也算是markdown的方言吧..
功能
编辑:
清晰的标识出节点及其联结, 联结说明
使用:
在没有程序渲染思维导图时, 仅查看文本文件也可以纵览整个思维导图, 从而修改重要的地方
特点:
无需用户标记节点位置, 渲染时自动判断
语言特性, 有自己的语法
缺陷
- 编辑不便
- 无法识别相同节点与相同联结
- 只能写有向有环图
可能加入的特性
图片节点(但是对于文本操作可读性很差)
坐标控制(渲染需要判断是否为连通图)
标签(在过于复杂, 可读性差的情况下)
多节点到多节点的拓扑(多个节点'同时'连到一个节点上, 可读性更差了)
如何使用项目
语法示例:
# MVC架构
一种web应用框架# 模型
[控制器]返回响应/模型
# 视图
[控制器]提交动作
# 控制器
[模型]提交查询
[视图]返回数据并由View渲染
- 以#开头的行会被解析为一个节点
- 若图中存在环路, 解析时会暂时忽视一些联结
- []中表示联结到的节点, 之后是对联结的说明
若节点名重复, 则其前向会同时连接到所有同名节点
最后, 以上文本将被解析为下图:

视图渲染过程
Single/All模式
将所有节点保存之后, 默认仅显示节点
用户可以选择显示连接线/不显示连接线(显示连接线可能会很乱)
- 当鼠标单击该节点时, 会隐藏所有不相关节点, 并重新排列视图, 进入Single模式
- 当鼠标右击任意位置, 会返回All模式
- 当鼠标悬停在某个节点上时, 会单独显示该节点相关的所有连接线
下图是一个Single模式的视图格式,它由五个部分组成:
- 前向节点(HIJ)
- 后继节点(BCD)
- 环路节点(G和F)
- 节点(A)
- 节点信息(Description of A/G)

解析
示例文本
# A Description of A
[B]description of A to B
[C]A to C
[D]A to D
[E]A to E# B
# C
# D
[A]D to A# E
[A]E to A
[A]E also to A# F
[A]F to A# G
[A]G to AF
G
E A B
C
D
理想的解析:
- All-Mode(整张导图)

- Single-Mode(节点A)

首先解析为json
[
{
"name": "",
"next": [
{
"name": "",
"next": [
]
},
{
"name": "",
"next": [
]
}
]
},
{
"name": "A",
"description": "Description of A",
"next": [
{
"name": "B",
"description": "description of A to B"
},
{
"name": "C",
"description": "A to C"
},
{
"name": "D",
"description": "A to D"
},
{
"name": "E",
"description": "A to E"
}
],
"back": [
"D",
"E",
"F",
"G"
]
},
{
"name": "B",
"description": "",
"next": [
],
"back": [
"A"
]
},
{
"name": "C",
"description": "",
"next": [
],
"back": [
"A"
]
},
{
"name": "D",
"description": "",
"next": [
{
"name": "A",
"description": "D to A"
}
],
"back": [
"A"
]
},
{
"name": "E",
"description": "",
"next": [
{
"name": "A",
"description": "E to A"
},
{
"name": "A",
"description": "E also to A"
}
],
"back": [
"A"
]
},
{
"name": "F",
"description": "",
"next": [
{
"name": "A",
"description": "F to A"
}
]
},
{
"name": "G",
"description": "",
"next": [
{
"name": "A",
"description": "G to A"
}
]
}
]
然后写出了一堆bug弃坑了