# 架构图与系统流向:Maplen 是如何运转的
> 从 4N 正交体系到静态优先流水线,用 Mermaid 图表全景解析我为 Maplen 搭建的底层逻辑
- Site: https://maplen.top/
- Page: https://maplen.top/nodes/architecture-showcase/
- LLM: https://maplen.top/nodes/architecture-showcase/llms.txt
- Author: 红枫 (Maple)
- Audience: AI agents / LLM tools
- Section: Nodes / 实践
- Published: 2026.11.01
- Tags: 功能展示
- Markdown: https://maplen.top/nodes/architecture-showcase.md
- Column: Maplen
## Content
export const contentArchitecture = `
flowchart TB
subgraph 4N["4N 内容分类(单篇文章的主要语气)"]
direction LR
N1["Narrative · 纪事
(自我 · 经历 · 成长)"]
N2["Nebula · 光影
(作品 · 故事 · 感悟)"]
N3["Notes · 随笔
(观察 · 探究 · 思考)"]
N4["Nodes · 实践
(技术 · 探索 · 创造)"]
end
subgraph Columns["Columns 专栏体系(横向贯穿的探索主线)"]
direction TB
C1["专栏 A:Maplen (创造手记)"]
C2["专栏 B:某项目从构想到落地的完整记录"]
C3["专栏 C:关于某主题在不同时期的思考演变"]
end
C1 -.->|"跨栏目收录"| N4
C2 -.->|"叙事复盘"| N1
C2 -.->|"技术实现"| N4
C2 -.->|"灵感共鸣"| N2
C3 -.->|"现象观察"| N3
C3 -.->|"哲学追问"| N3
`;
export const staticPipeline = `
flowchart TD
subgraph In["一、源文本输入 (Input)"]
direction LR
MD[".md 纯文本文章"]
MDX[".mdx 交互手记"]
Wiki["Wiki 概念词条"]
end
subgraph Pipe["二、静态预编译管线 (Pipeline)"]
direction TB
P1["1. Zod Schema 强类型约束"] --> P2["2. Remark 语法树解析 (Wikilinks / 句锚点)"]
P2 --> P3["3. KaTeX 数学公式静态渲染 (MathML / SVG)"]
P3 --> P4["4. Shiki 服务端双主题着色 (Diff / 焦点高亮)"]
end
subgraph Out["三、全景产出交付 (Output)"]
direction LR
O1["纯净 HTML (零首屏 JS)"]
O2["按需水合 Islands"]
O3["分级 RSS / Sitemap"]
O4["llms.txt 知识镜像"]
end
In ==>|"提交构建流水线"| Pipe
Pipe ==>|"生成交付产物"| Out
`;
export const hydrationSequence = `
sequenceDiagram
autonumber
actor User as 访客浏览器
participant CDN as 边缘网络 (Cloudflare Workers)
participant DOM as 页面 DOM 树
participant Island as React Island (如物理模拟)
User->>CDN: 发起页面请求 GET /nodes/architecture-showcase/
CDN-->>User: 极速返回静态 HTML + CSS
Note over User,DOM: 页面即刻可读(首屏零 JS 阻塞)
User->>DOM: 向下滚动,浏览技术手记
Note over DOM: 遇到带 client:visible 指令的交互组件
DOM->>Island: 触发 IntersectionObserver,动态拉取组件代码
Island-->>DOM: 完成水合 (Hydration),激活交互画布
DOM-->>User: 用户可流畅拖拽参数滑块与物理振子
`;
export const lifecycle = `
stateDiagram-v2
[*] --> 灵感发端: 日常观察 / 偶发疑问 / 造物冲动
灵感发端 --> 初稿写作: 确定表达语气 (4N 之一)
初稿写作 --> 独立发表: 单篇成文,具备独立可读性
初稿写作 --> 编入专栏: 与其他文章构成完整探索线索 (Columns)
编入专栏 --> 交叉引证: 通过 Wikilinks 形成概念网络
独立发表 --> 持续重构: 随认识加深迭代演进
交叉引证 --> [*]
`;
在写技术实践手记时,我经常需要表达复杂的系统结构、通信协议和业务流向。
但我非常抗拒在文章里插入大量由外部绘图工具截取的位图图片。那些图片不仅体积沉重,而且无法根据「褐页」与「暖墨」双主题自动调色;更致命的是,图片里的文字无法搜索,一旦架构微调就必须重新截图替换。
因此,我将 [Mermaid](/wiki/mermaid.md) 深度集成到了 [Maplen](/wiki/maplen.md) 的 [Markdown](/wiki/md.md) / [MDX](/wiki/mdx.md) 渲染管线中。所有的流程图、序列图与状态机都直接以文本代码的形式存在,受 Git 统一版本控制,并在构建与主题切换时实时矢量渲染。
这篇手记通过四个直观的架构视图,为你展示 Maplen 整个站点的骨架与运转机理。
---
## 一、4N 与 Columns 的正交内容模型
Maplen 最核心的内容哲学,在于解开文章类别与主题探索之间的死结。
- **4N** 决定单篇文章的**表达语气**:无论是直抒胸臆的经历复盘(Narrative),对光影佳作的触动(Nebula),对复杂问题的理性思辨(Notes),还是亲手构筑代码与电路的实践(Nodes);
- **Columns(专栏)** 则打破分类的边界,沿着时间、项目或主题的脉络,将散落在不同栏目中的文章串联成一条完整的认知线索。
这种正交设计让写作获得了极大的自由:一个持续半年的硬件项目,可以同时包含架构图解(Nodes)、人机关系随笔(Notes)、科幻电影共鸣(Nebula)和结项纪事(Narrative),它们共同编织成了专栏的骨肉。
---
## 二、静态优先:从源文本到发布产物
Maplen 没有复杂的后端服务、数据库或管理后台。所有文章都保存在项目仓库中,通过 [Astro](/wiki/astro.md) 的 Content Layer 进行强类型校验与预编译。
整个管线遵循清晰的 **输入 · 转换 · 交付** 三栏式分工,设计原则是:**能在构建期完成的事情,绝不留到浏览器去算**。
| 输入层(Input) | 核心转换管线(Pipeline) | 交付物矩阵(Output) |
| :--- | :--- | :--- |
| **[Markdown (.md)](/wiki/md%5C.md)**
承载沉浸长篇叙事 | **Zod Schema 校验**
严格校验 frontmatter 标题、标签、日期约束 | **纯净 HTML 页面**
极速秒开,双主题预载零闪白 |
| **[MDX (.mdx)](/wiki/mdx%5C.md)**
引入局部图表与仿真 | **Remark + Rehype**
[KaTeX](/wiki/katex%5C.md) 公式预渲染、Wiki 双向链接解析 | **按需水合 Islands**
滚动到视口触发微量 React 运行时 |
| **Wiki 概念词条**
数字花园词条定义 | **[Shiki](/wiki/shiki%5C.md) 高亮引擎**
双主题色彩映射、代码 Diff 与焦点行 | **RSS / llms.txt**
面向人类订阅与 AI Agent 的全景分发 |
- 数学公式通过 [KaTeX](/wiki/katex%5C.md) 预渲染为静态 MathML / HTML,彻底消除了客户端 MathJax 闪烁问题;
- 代码块由 [Shiki](/wiki/shiki%5C.md) 在服务端直接完成语法高亮与行号着色,开箱即支持双主题与代码 Diff;
- 生成物除了标准的静态网页,还包括全站与各分栏的 RSS、Sitemap 以及面向现代 AI 工具的 `llms.txt`。
---
## 三、渐进水合:静态首屏与交互岛屿
技术文章有时需要动态实验——比如后面会展示的阻尼振子模拟与交互式函数图像。但我绝不希望为了局部的交互功能,让整站变成一个体积庞大的单页应用(SPA)。
我采用了 [Astro](/wiki/astro.md) 的 **React Islands** 架构,并配置了 `client:visible` 懒加载策略:
首屏加载时,页面纯净得只有骨架 HTML 和样式文件,加载速度以毫秒计。只有当读者真正把页面滚动到交互图表附近时,浏览器才会异步拉取对应的微型 React 运行时与组件代码,完成原地水合。
Mermaid 渲染引擎本身具有一定体积。在 Maplen 中,Mermaid 脚本只在正文中检测到图表标签时才会动态按需加载,绝不污染无图表文章的加载速度。
---
## 四、生命周期:一篇文章在 Maplen 的演进
文章不是一次性的快餐消费品。在我的设想中,Maplen 里的每一篇文字都像园子里的植物,会随着时间持续生长。
一个灵感可能最初只是 Notes 里的几句片段;随着亲手编码验证,它演变成 Nodes 里的实践手记;当多个相关探索汇聚,便自然升华为一个 Columns 专栏;再通过 `[wikilinks](/wiki/wikilinks.md)` 与其他概念词条相互引证,最终织就一张能够长期生长的知识之网。
---
## 五、在 Markdown 中编写图表
在实际写作中,我只需要在 Markdown/MDX 文件中书写标准的 Mermaid 代码块,或者调用封装好的 `` 组件:
```mdx
export const flow = `
flowchart TB
A["源文本"] --> B["Astro 构建"]
B --> C["静态 HTML"]
`;
```
代码即图表,图表即思考。这正是让写作回归纯粹与坚固的技术方式。
## Wiki
- [Astro](https://maplen.top/wiki/astro/llms.txt): 现代静态优先、内容驱动的 Web 框架,Maplen 的基座构建引擎与孤岛架构运行时
- [KaTeX](https://maplen.top/wiki/katex/llms.txt): 高性能数学公式排版引擎,在 Maplen 中提供出版级数学符号与几何推导渲染
- [Markdown (.md)](https://maplen.top/wiki/md/llms.txt): 轻量级纯文本标记语言与文件格式,Maplen 沉浸式阅读与文字交付的基石
- [MDX (.mdx)](https://maplen.top/wiki/mdx/llms.txt): 在 Markdown 中无缝嵌入 JSX 组件的超集格式,Maplen 实现可交互工程手记的媒介
- [Shiki](https://maplen.top/wiki/shiki/llms.txt): 基于 TextMate 语法的现代代码高亮引擎,为 Maplen 提供精准的双色主题代码块着色与复制工具
- [Maplen](https://maplen.top/wiki/maplen/llms.txt): Maplen 是我的个人网站,记录生活、想法与造物实践的独立数字花园
- [Mermaid](https://maplen.top/wiki/mermaid/llms.txt): 基于文本的声明式图表绘制语法,Maplen 架构拓扑与状态机可视化的内嵌引擎