# 架构图与系统流向: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 架构拓扑与状态机可视化的内嵌引擎