抛弃hexo并重写博客渲染引擎

引言

博客经历了从 zblog -> wordpress -> typora -> hexo 这样的切换历程,并且在 hexo 上停留了将近三年。我不觉得 hexo 有啥问题,但我个人目前已经不太愿意用node系软件来处理博客了,刻板化的认为 V8 性能拉跨(ps: hexo 对比起 hugo 之流的确拉跨 ),遂花了一天时间,仿照 hexo 命令,用 Go 重写了一个静态网站生成工具。

解决痛点

我的痛点有如下几个

  1. 分类繁杂
  2. 多日志时结构混乱
  3. 受node版本影响
  4. 受npm包影响
  5. 生成效率不高
  • 诉述1:_posts 目录下可派生多个文件夹,当作分类,此时 categories 属性失去意义。
  • 诉述2:由于 痛点1 导致的目录表述不清,导致的在搏客量大的时候,无法高效的管理。
  • 诉述3:hexo 的表现受到 nodejs 版本的影响,个人不太愿意进行 nodejs 版本的管理。
  • 诉述4:hexo 部分 插件/依赖 长时间不更新,在进行js编写时,导致的一些异常无法得到修复。
  • 诉述5:生成效率不高,虽然不差这点时间,但给人的直观印象是生成的代码也不会咋样。

如何解决痛点

  1. 在属性上,抛弃了 categories 属性,单纯按照 posts/{{category_name}} 的形式进行分类划分,使分类的属性概念转换为结构概念。
  2. 使用 Go 进行的重构,不受 go 版本与依赖的影响。
  3. 读写io有buffer加持,能做到50篇左右文章,生成耗时在 200ms 范围内。

用到哪些技术

  1. markdown 解析: yuin/goldmark
  2. markdown toc 生成: abhinav/goldmark-toc
  3. 监听文件变更: radovskyb/watcher
  4. 命令行工具: spf13/cobra
  5. 本地预览服务器: gin-gonic/gin

如何获取与尝试

看如下命令

# 执行安装
go install gitter.top/mder/mder
# 创建第一个项目
mder init --name "my_first_blog"
# 本地预览
mder serve
# 本地部署
mder deploy

项目地址

在这里查看项目地址: https://gitter.top/mder/mder