专栏首页owentBlog切换到Hugo

Blog切换到Hugo

其实很早就想把Blog迁移到静态化的博客系统了。不过一直没花时间来搞,当然主要原因还是懒。

这次下决心搞主要是因为,之前VPS迁移到Vultr,然后它的主机默认是没有交换区的。后来老是收到网站崩溃告警,每次去看都是MariaDB挂掉了,然后查了一下是内存不足。 然后,调整了几次参数,发现都不能解决问题。我这么个小站搞个高配机器显然是浪费。这种小网站都能耗尽1GB的内存我也是醉了。所以后来就干脆迁移到静态博客系统算了。

框架设计

其实本来有两个备选方案。一个是国人写得Hexo,另一个是HugoJekyll不在考虑之列,因为我对ruby不熟并且没有兴趣。以前玩过Jekyll,感觉还是太折腾了。特别是国内还得换源什么的。

不过单单就HexoHugo的框架设计来说,我觉得是Hexo远胜于Hugo的。因为Hexo有更完整的插件机制,主题机制。它的插件机制可以让你替换里面的核心组件,增加更多的渲染引擎、模板引擎等等。并且可以和nodejs的很多工具配合起来用,非常方便。这样主题作者和插件作者都能用自己的习惯和熟悉的工具链来开发。比如你可以用sass或者less来写css,然后也可以不用默认的模板引擎ejs,很多人的主题用jade的。甚至可以换掉Markdown引擎,增加更多的Markdown功能进去。也可以在很多事件点插入和修改生成的HTML,来插入一些功能。

相比之下Hugo就差多了。压根没有插件机制,干啥都得主题自己做。读配置也写得比较死,很不方便。比如Hexo可以给主题加配置,然后有主题配置和站点配置,但是Hugo就没法读取主题配置。另外Hugo的模板引擎只能用Go语言的HTML template。哇这货难用的屎一样。语法就像是要你自己写逆波兰式。自己写树形结构。不过就像Hugo自己说的,它这个静态网站生成系统非常地快。确实很快,比Hexo快多了。而且它的Star数量也赶超了Hexo

不过我觉得HugoHexo活跃的原因并不是因为它快。我觉得对于静态网站生成来说,这点性能并不是特别重要。而且Hexo的生成速度也可以接受,至少它比gitbook快多了。真正制约Hexo发展的应该是文档。作为一个开源项目而言,文档及其重要。而Hexo很多重要部分API的文件,根本找不到。比如它说一些事件里的回调参数是Data类型,然后我并没有在哪里找到Data类型是个啥,里面有什么。写插件和主题的时候全靠看别人的怎么写,然后试。这太伤了。相比之下,Hugo的文档就完善得多得多得多。虽然也有些地方的找别人主题的参考实现,但是基本上从复杂到小白的文档都覆盖得比较完整。

现在我也说不上来这两个那个更有前景,Hexo还差很多文档和事件响应目前给了裸HTML,虽然能用而且很自由,但是操作起来其实很不方便,缺乏最佳实践。而Hugo目前缺失插件机制,而且很多配置和参数写得很死。

我迁移到静态博客系统主要是复刻主题。所以两个系统的主题都复刻了一遍,主框架是一样的,但是用了兼容两者的写法和配置吧。

移植主题

我的Wordpress的博客用得是自己写得主题distinctionpp。所以复刻了两个系统的主题:

两个主题的功能和内容基本是保持一致的,除了有些无法实现的功能。比如Hugo很难支持把<!– toc –>转为目录,只能固定地给所有文章开头加目录。

然后在原有的主题上有做了更进一步地精简,裁剪加载文件大小和把一些图片换成纯CSS3实现,再就是微调一些样式。

然后顺便更新了下依赖库啥的,我毕竟不是搞前端的,所以懒得搞这种UI布局之类的东西,就直接用bootstrap了。不过我用的bootstrap的4.0,4.0必须加载它的js文件,而且还依赖tether,也导致多加载了几个文件。

不过直接能用bootstrap的响应式布局还是蛮舒服的。以前的distinctionpp主题的手机上显示还是看着蛮不爽的。而且现在还可以全部用相对大小,不再用px了。而且都不需要我自己去细调。

顺便学了下用sass来写css,其实和以前less差不太多。只不过bootstrap开始转用sass了而且似乎现在less并没有sass活跃。而且导入sass之后还能使用一些bootstrap定义的函数什么的。还算方便吧。

接下来还有一些额外的功能得添加和替换,毕竟静态博客和动态网站还是有一些限制的。

添加 MathJax/KaTex 支持

MathJaxKaTex主要用来用Latex写公式。

这个在Hexo里很方便,有人写了插件,安装就行了。但是Hugo就得自己集成了,还好反正不困难。然后我的Blog就支持公式了。并且我把以前一些文章的内容改成了公式。好看多了。

代码高亮

原先我是写了Wordpress插件WP-Code-Highlight.js。这里我就直接集成到主题里去了。而且也没其他什么很好的方法。两个系统自带的高亮都很渣,插件兼容性很糟糕。

搜索

静态博客没有搜索功能嘛,所以我研究了下通过GET请求到搜索引擎来做站内搜索。但是有一些搜索引擎其实提供Search Box的功能,供你在网站里集成站内搜索,比如Google和DuckDuckGo。我看过最好的还是Google,但是国内Google太不稳定,所以我还是用了Bing的GET请求。目前主题里都是用的请求跳转到搜索引擎,不过说不定哪天我会有兴趣集成Search Box。

这里先记下其他搜索引擎的参数:

评论

评论系统也是蛮麻烦的,之前国内的多说已经关闭了。我看了下别人说的其他家也不是很好用。

不过我之前看到过有人做了用Github的Issue来做评论系统的,之前star了gitcomment,就试了一下。我的主题里是集成了这个,但是这个和另一个俄罗斯小朋友写得系统一样,要求评论者必须授权Application对Public仓库的完整读写权限(包括但不限于代码、Wiki和issues)。不过gitcomment作者也说了,github没有提供更系粒度的权限了,所以这已经是要的最小的权限了,但是读权限就算了,还必须给写权限,我还是觉得有点不靠谱,所以我自己妹妹有用,测试完就关掉配置了,其他人谁想用倒是可以打开。

最终还是回归disqus。无奈这货在国内被墙。唉,反正上我blog还会回复的应该都是程序员了吧?程序员访问外国网站不是难事吧?所以不管了先还是disqus吧。

后遗症

这个换完系统其实还是蛮伤的,一个是之前的评论我先吧重要的补到原来的文章里了,不重要的就丢了。 然后哪些迁移工具导出的Markdown多多少少有问题,所以我挨个过了一遍。 再就是原来的地址都失效了,站点地图内容也全部变了,估计搜索引擎会发现很多死链,不知道啥时候才能刷新完。 至于文章的超链接,我自己Blog里互相引用的我是过了一遍改掉了,外部的引用我就没办法了。而且懒得复原原来的短连接了,新的链接模式都很短。

不过也算是一劳永逸吧,所以文章都变成Markdown,以后都很容易转换和导出导入。不再需要数据库了,我觉得我的VPS又可以降级了。嘿,便宜才是硬道理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 协程框架(libcopp)v2优化、自适应栈池和同类库的Benchmark对比

    libcopp很早就实现完成了v2版本,现在迁移进atsf4g-co/tree/sample_solution以后也把v2分支正式并入了主干。原来的版本切出到v...

    owent
  • 开源项目得一些小维护

    其实我那几个特别是工具类得开源项目一致都有维护和更新,但是每次更新得量和要点并不怎么突出所以一致也没写点什么。但是偶尔吗也会碰到一些稍微值得记录的东西,但是又不...

    owent
  • 一些xresloader(转表工具)的改进

    最近有几个其他项目组的童鞋给我之前的 转表工具链-xresloader 提了几个需求。然后我也根据我们近期一些需求点对转表工具链一起给这套工具做了点功能增强和细...

    owent
  • NeurIPS 2018 | BP不用算梯度,这样的线性反向传播也能Work!

    反向传播算法(Backprop)是很多机器学习算法中主要使用的学习算法。但是在实践中,深度神经网络中的反向传播是一种非常敏感的学习算法,它的成功取决于大量条件和...

    机器之心
  • 微信许家滔:微信10亿日活场景下,后台微服务架构及存储架构实践!

    作者介绍:许家滔,微信技术架构部后台总监,专家工程师,多年来伴随QQ邮箱和微信后台成长,历经系统从0到10亿级用户的过程。目前负责微信后台工作,包括消息,资料与...

    数据猿
  • 2.2 HTML5基础入门

    网页就是HTML?这么理解大致准确。通常网页中包含了文字,图片、视频、小游戏,动画效果等等内容。我们以本章开头的html为例说明:

    周星星9527
  • 2.2 HTML5基础入门

    网页就是HTML?这么理解大致准确。通常网页中包含了文字,图片、视频、小游戏,动画效果等等内容。我们以本章开头的html为例说明:

    周星星9527
  • storm自定义分组与Hbase预分区结合节省内存消耗

    在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region ...

    intsmaze-刘洋
  • Hive 常见的数据倾斜及调优技巧

    Hive在执行MapReduce任务时经常会碰到数据倾斜的问题,表现为一个或者几个reduce节点运行很慢,延长了整个任务完成的时间,这是由于某些key的条数比...

    大数据技术架构
  • Python-Excel-openpyxl-02-写入列表数据

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia

扫码关注云+社区

领取腾讯云代金券