惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Spread Privacy
Spread Privacy
T
The Exploit Database - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy & Cybersecurity Law Blog
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
T
Tenable Blog
TaoSecurity Blog
TaoSecurity Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
AI
AI
P
Proofpoint News Feed
A
About on SuperTechFans
P
Privacy International News Feed
月光博客
月光博客
雷峰网
雷峰网
S
Secure Thoughts
博客园 - 叶小钗
博客园 - 聂微东
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Project Zero
Project Zero
The Cloudflare Blog
SecWiki News
SecWiki News
The Hacker News
The Hacker News
V
Vulnerabilities – Threatpost
罗磊的独立博客
A
Arctic Wolf
阮一峰的网络日志
阮一峰的网络日志
Know Your Adversary
Know Your Adversary
酷 壳 – CoolShell
酷 壳 – CoolShell
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Troy Hunt's Blog
The Last Watchdog
The Last Watchdog
Schneier on Security
Schneier on Security
小众软件
小众软件
有赞技术团队
有赞技术团队
博客园 - 司徒正美
T
Tailwind CSS Blog
量子位
C
Cybersecurity and Infrastructure Security Agency CISA
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Security @ Cisco Blogs
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
L
Lohrmann on Cybersecurity

kok的笔记本

macOS 里 神秘的 kernel_task ,为什么一直在写入硬盘? 产品 node_modules 为什么总是这么大:一次从原理到实践的瘦身记录 谁来救救我的Mac存储空间-清理工具横评:付费vs免费,从界面到命令行 2023 读书推荐 写给播客嘉宾的录制说明书 在 Electron 中使用 Vue Devtools 几何原本中勾股定理的证明 Mac 安装软件时提示 已损坏,无法打开 应该怎么办 PegBoard 你的数字白板 少数派读者与作者的 NewsLetter 闲棋冷子-2-2021年我读过哪些很棒的书 闲棋冷子-1-相信你的身体,它不会骗你 修复 macOS 中 Cisco Anyconnect 报的奇怪Bug 我的 NAS 使用记录 Omniplan 入门教程 Hugo升级0.74记录 一年级产品经理需要掌握什么知识? 无籍之谈-3-和盖盖聊聊尼尔·盖曼与中外科幻 露营笔记-装备篇 无籍之谈-2-和鹏仔聊华尔街兴盛史,给小白投资者的一些建议 介绍一下《无籍之谈》 无籍之谈-1-和不土聊佛学,谈谈《一心走路》《僧侣与哲学家》 高达模型入门 - 工具整理 5 分钟了解 Sketch 的新特性 Tint - 色调 Hugo 主题移动端开发的一些心得 修复 macbook 键盘连击问题 在 Hugo 中使用 Open Graph 提升分享效果 选小米10 还是小米10 Pro? 利用 Python 批量合并 Excel 文件 为什么家国梦不好玩? 高雄85大楼 Mac优秀软件推荐-Itsycal 找到并和正确使用无版权资源 Excel 常用函数 一 无线吸尘器挑选指南 钢铁、蒸汽与 19 世纪 聊聊《铁道之旅》 如何挑选一个电脑电源? 有用的正则表达式 给psd瘦身 2019第二季度读书总结 组装 ITX 黑苹果主机 Intel CPU 挑选指南 常用的 Markdown 工具 2019第一季度读书总结 怎么用尺规作图画75°角? 在 Hugo 中使用 Sass 真正的换位思考-《爱的沟通》读书笔记 反叛公司中的治理者和顾问玩法 如何搭配成为一个盐系男生? 反叛公司 Rebel Inc. 入门指南 如何评估需求,预估开发成本? 小米8、小米8SE、小米8青春版参数对比 微信外部链接内容管理规范分析 在售 iPhone 参数对比 给Hugo blog中增加一些插件 微信 MacOS 多开的一些实践 矩阵与线性变换的概念理解 尺规作图小习题 用 hugo 和 netlify 搭建blog 介绍我自己 瓜摊老板 Really? EDM邮件营销,你需要知道 果子沟大桥 喀赞其的马车 清晨的木梨硡 hexo 主题开发 青龙寺的狮子 用一个特殊方法解决同位词问题 语义化 html 标签 数模的基本思路和写作攻略 hexo blog 搭建 0.1,0.1^0.1,为什么数值是波动的? 智能手机之旅 老师和学生的博弈 这些使用抗生素的方式,你做的对吗? 炼金术与钢之炼金术师 kok的笔记本 kok的笔记本 中国长征运载火箭家族-PegBoard
Hugo 中使用思维导图
kokdemo · 2019-03-14 · via kok的笔记本

想要在 blog 中插入脑图,之前一直都在使用插入图片的方法,这样非常不优雅,为了解决这个问题,我搜了不少文章。

一、寻找解决方案

然而 hugo + mindmap 搜不出来什么有用的结果,我转而搜索 hexo + mindmap 找到了几篇文章。

里面是讲怎么在 hexo 中插入脑图的,简单看了一下,是通过 hexo 的 pullquote 功能来插入渲染好的 html 到页面中。

靠谱,我觉得可以!

二、导入相关的库

核心渲染的库是百度的 kityminder ,所以需要导入一些文件:

js 部分

  • kity.min.js:核心 svg 渲染库,放入 hugo 目录的 static/js/
  • kityminder.core.min.js:脑图渲染库,放入 hugo 目录的 static/js/
  • mindmap.min.js:来自 @HunterXuan 开发的,用来将 li 结构转换成脑图需要的 json 的文件,放入 hugo 目录的 static/js/
  • jquery.slim.min.js:由于上一个 js 使用了 jquery 的 each 和 find 函数,所以需要放入 hugo 目录的 static/js/ 中,btw 我还蛮讨厌 jq 的,但是懒得用原生方法重新写一遍了。

css 部分

  • kityminder.core.css:核心 svg 渲染库,放入 hugo 目录的 static/css/
  • mindmap.css:脑图渲染库,放入 hugo 目录的 static/css/

以上的这些文件,你都可以在这里找到。

引入文件

在模板的 header 里一股脑的放入这些文本:

<link href="{{.Site.BaseURL}}css/kityminder.core.css" rel="stylesheet">
<link href="{{.Site.BaseURL}}css/mindmap.css" rel="stylesheet">
<script src="{{.Site.BaseURL}}js/kity.min.js"></script>
<script src="{{.Site.BaseURL}}js/kityminder.core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.slim.min.js"></script>
<script src="{{.Site.BaseURL}}js/mindmap.js"></script>

就完成了引用工作,当然你可以选择更规范的引入方法,这里只是为了简单。

三、将 markdown 渲染为 html

前面 hexo 的文章中提到用 pullquote 来渲染 html,hugo 中有没有类似的功能呢?

有的,那就是 shortcodes

首先在 hugo 目录 /layouts/shortcodes/ 下新建一个 html,我这里起名叫 mind.html,内容如下

<div id="{{ .Get 0 }}" class="mindmap">
    {{- .Inner -}}
</div>

这个 shortcodes 非常简单,就是将其中的内容渲染出来套个 div 的壳子,加上 mindmap 的类名。

然后在 markdwon 中加入这样的文本

{{% mind mindid %}}
- 根目录
    - 一级目录1
        - 二级目录1
        - 二级目录2
    - 一级目录2
{{% /mind %}}

BTW:这里插一句,我才发现如果要阻止 hugo 渲染 short code,要增加注释符号 {{%/* mind mindid */%}}

效果如下:

{{% mind mindid %}}

  • 根目录
    • 一级目录1
      • 二级目录1
      • 二级目录2
    • 一级目录2 {{% /mind %}}

原理如下:

  1. mindmap.js 解析了渲染出来的 ul-li 结构
  2. 遍历生成了一个 json 对象
  3. 用这个对象渲染了一个脑图
  4. 然后替换了 div.mindmap 这个 dom。

如果需要插入多个脑图,建议修改 mindid ,已作区分。

四、还可以提高的地方

  1. kity 默认的脑图还是有点丑,这里后续要调整。
  2. 我讨厌 jquery,希望可以原生的实现 mindmap.js

最后感谢一下文章:

  1. 在 Hexo 中使用思维导图
  2. Hexo中使用markdown来绘制脑图(mind map)