创建Mermaid初始化的局部视图
在你的 layouts/partials
目录下创建一个名为 mermaid-init.html 的新文件。
将以下代码添加到 mermaid-init.html 中:
添加shortcodes
新建 layouts/shortcodes/mermaid.html
文件.
将以下代码添加到 mermaid.html 中:
|
|
说明:
- {{- if not ($scratch.Get “mermaid-counter”) -}}: 检查 mermaid-counter 是否未设置 (即为 nil)。
- {{- $scratch.Set “mermaid-counter” 1 -}}: 如果 mermaid-counter 未设置,则将其初始化为 1。
- {{- partial “mermaid-init.html” . -}}: 仅当 mermaid-counter 第一次设置为 1 时,才加载 mermaid-init.html 局部视图。
- {{- else -}}: 如果 mermaid-counter 已设置,则执行此 else 块。
- {{- $scratch.Add “mermaid-counter” 1 -}}: 在后续使用时,mermaid-counter 会递增。
工作原理:
第一次在页面上遇到 mermaid 短代码时,mermaid-counter 将为 nil。 if 条件将为真,并且 mermaid-counter 将被设置为 1。 mermaid-init.html 局部视图将被加载,确保 Mermaid 库被加载。 在同一页面上后续使用 mermaid 短代码时,将执行 else 块,并且 mermaid-counter 将递增。 mermaid-init.html 局部视图不会再次加载。 这种方法确保了 Mermaid 库只在每个页面加载一次,并且只在存在 Mermaid 图时加载,而不需要修改你的基础布局。
如何在hugo中使用
在你的 Hugo Markdown 文件中,你可以像这样使用 mermaid 短代码:
|
|
演示
示例一
graph LR A[Start] --> B{Is it?}; B -- Yes --> C[OK]; B -- No ----> D[KO]; C --> E[End]; D --> E;
示例二
flowchart TD A[Start] --> B{Is it?}; B -- Yes --> C[OK]; B -- No ----> D[KO]; C --> E[End]; D --> E;