攻克静态blog
上周五我才开始研究静态blog。我选定的基本是hugo,因为这个东西生成网站的速度非常快。暂时我只是在本地操作。一开始的时候我不知道那个生成网站的命令窗口必须一直开着网站才能浏览,关掉的话就开不了了。之所以不了解这个,大概我还没研究过hugo的原理。之所以我在本地测试WordPress的时候可以一直开网站是因为虚拟的那个东西其实一直都常驻我的电脑。同样是本地测试,静态网站的生成速度以及网页打开速度比WordPress快非常多。如果只是几篇文章,生成网站的速度是毫秒级的,基本上就是一眨眼的功夫。昨天我测试了,生成200多篇文章的网站,也非常快,只需0.5秒。但是,如果网站有9000多篇文章呢,到底需要多长时间生成?这个我还没测试出来。因为我那9000多篇文章还没有完全符合的hugo框架的要求。
要用Hugo建立静态网站,如果是从零开始,当然很简单,按照他们的规则去写就可以了,但对我来说,我不是从零开始的,之所以用这个东西是因为生成速度快,而且可以挂在免费的空间上面。因为我的老blog很多,所以我必须要找一个这样的地方。如果我仍然使用WordPress,显然就非常浪费资源了。静态网站跟动态网站最大的区别,我觉得是静态网站不自带评论功能。几乎可以这么说,静态网站如果不外挂,是无法交流的。因为我挂的是老blog已经早就不去更新了,从前那些挂着blog的BSP都已经全部没了。我会在静态blog上留下可以交流的链接,如果有需要,访客可以找到我的blog,然后留言。这样的好处是起码你还能找到我,但坏处就是,你不能在你感兴趣的那个地方直接留言。去到我的blog还得解释你是从哪里来的,这就比较麻烦。但换个思路,我把那些已经不存在的东西重新又翻出来让你见到,其实已经很不容易了。
hugo的建站不难,但是如何把核心内容转化为hugo适配的不容易。我要把XML格式的大文档转化为一篇一边的markdown文档,这个星期我都在折腾这个。我本想直接用一个python脚本解决所有问题,因为理论上这是相当简单的操作,但是我却发现能搜索的python脚本,根本不适合我。有些已经老掉牙了,用的是python 2的版本,我试着转版本,让失败了,因为我实在不知道,里面的某些操作到底在新版本里是怎么个整法。
经历XML转化为另外一种格式的XML之后,我对XML这个东西算是有点了解了,我个人觉得输出markdown其实要比XML格式互转简单一些。XML互转只需要输出一个文件,但是markdown要生成无数个文件。python的操作之中,我最生疏的就是文件处理。输入输出那一章书我觉得自己根本没毕业。现成的python脚本无法满足我,我得自寻出路。幸好有一个叫做html2text python模块拯救了我,这个东西解决了从html到markdown的转换,所以正文最核心的东西的转化已经不成问题了,虽然里面还有一些说不准什么时候会出现的状况,但总体来说效果不错。XML的格式转化如果有一些我不想转义的东西,我还能用cdata把那些都圈起来,圈起来以后就没烦恼了,但是用markdown文件在hugo建站,必须有一个YAML的开头,而那个东西是有严格的格式限制的。篇名、分类和标签都必须严格符合这些要求。因为我的网址输出用的是python的时间戳,完全是数字,所以没烦恼,一开始的时候,文档的文件名我用的是时间加篇名,但因为片名的幺蛾子太多,所以,我选择了用纯粹的时间,单位精确到秒。如果不是手动设置过时间,不会发生重复。接下来我需要做的是整一套替换列表。把里面严格限制不让用的东西全部整理一遍。这样才能保证hugo的网站里能生成了我的全部东西,而不会有些不合规则的直接被屏蔽掉。WordPress没有这种烦恼,顶多出来的东西乱码而已,只要我把可能乱码的东西全部cdata。简直爽歪歪。之所以可以这样,是因为我把数据导入到WordPress的时候,软件默认把我不规范的东西规范化了,现在这个步骤,我完全得靠自己。
虽然现在我生成的文件还不能100%的符合hugo的要求,但从完全不会到可以生成,而且大多还是合格的,能做到这个我已经很满意。