一、初次使用Hexo
第一次用Hexo是在刚学完Git之后,因为之前有见过别人用Git进行托管Hexo,于是便尝试自己去做一个托管于Gitee上面的Hexo,说来也是简单,安装完本地的Note.js和Git之后,直接执行npm代码就一键安装成功了。当时,按照教程将Hexo渲染出来的资源托管在Gitee上面,发现几个缺点。
第一:每次写文章都要进行hexo g && hexo d 上传到Gitee上面
第二:Gitee Pages界面不会自动更新部署,每次都要登录Gitee进行更新
第三:由于渲染出来的资源属于html静态界面,在目前,基本上所有的浏览器都有缓存功能,每次更新完文章之后,浏览器打开都需要Ctrl+F5进行强制刷新界面
当时我一直用的博客系统为Typecho,原因很简单:功能完善、界面比较优美、主题多、插件多、简单使用,不好的地方也有,由于是部署在自己的服务器上面,数据不稳定,容易丢失。但是,相对于“问题很多的”Hexo框架,Typecho还是作为我的首选博客系统。
直到个人的服务器再一次出现故障...
二、再次接触Hexo
再一次接触Hexo已经过去半年的时间了,在我的服务器又一次崩溃之后...某一天早晨,我发现Typecho打不开了,重要的是上面有我写的好多笔记,但是托管在Gitee上面的Hexo还是正常打开,并且速度很快,几乎没延迟,但是上面的笔记还保留在半年前(部署完之后就没用过)。此时的Hexo又使我产生了兴趣,在我眼里,Hexo轻量级,数据托管后不需要管理,不需要域名和服务器,那为什么不去用Hexo呢?
接着,试着回忆之前用Hexo的过程,hexo new 新文章....失败!hexo g && hexo s... 失败!一连着几个失败又让我陷进思考,将错误码在百度上面搜索后发现,Hexo的更新,使得旧版框架不再被支持,一个简单的方法就是重装Hexo。
三、尝试解决Hexo的几个问题
按照之间装Hexo系统时留的笔记,轻车熟路,很快就把新的hexo系统给装好了。紧接着要做的事是如何解决Hexo手动更新和浏览器页面缓存的问题。这么简单的问题肯定是要问度娘了!(我当时为什么没想过去解决这个问题呢?)
在百度上搜索一阵之后,根据浏览的帖子,我总结出一个结果:Gitee Pages服务不存在自动更新的功能!事情又陷入僵局...我在网页上盲目的点击,查看不同的说法,但答案都指向我总结的那个结果,结果的结果应该就是让我放弃这个想法。
正当一筹莫展之时,我偶然看见一个知乎上面的帖子,虽然没解决我的问题,但将我对Hexo的认识向前推进一大步!标题是这样写的:“Hexo + Coding = 完美白嫖!”。
Coding又是什么东西?Hexo跟这个又有什么关系呢?
带着上面的两个疑问,我看了看这个文章,大致是讲:Coding是类似于Gitee和Github一个仓库,是腾讯云所出的一个项目,可以用于团队协同开发一个项目,托管代码和网站等等。等等!可以托管网站?我想我知道Hexo跟这个有什么关系了,Hexo所用到的也是托管!由于之前把精力都放在Gitee上面,所以对其他国内的仓库了解不多,发现这个竟然还是腾讯云的大厂,我又发现了新大陆!
按着楼主的记录去操作,在Coding上面创建两个仓库,一个用于放Hexo的源文件,一个放Hexo渲染出来的资源文件,最后再用到Coding的托管功能,进行托管Hexo网站。这里值得一提的是,在托管网站的过程中,有一个步骤引起我的注意:创建构建计划。这是个什么东西呢?根据楼主的解释,创建构建计划就是创建一个任务,可以帮你自动更新托管网站中的代码。什么?自动更新?这不正是我想要的吗?
但是,事情总是不如人意...楼主这里为什么要创建两个仓库?Hexo的源代码和渲染出来的资源文件又有什么不同呢?他妹的,真让人头大!我又把这篇帖子从头到尾看一遍,里面丝毫没提为什么要创建两个仓库!这楼主不是要收费才肯教吧?然而,我发现这篇文章最开始的上面引入一篇别人写的文章,介绍如何维护Hexo的运行(因为开始只想着怎样解决Hexo的更新和缓存问题,所以没关注Hexo的维护问题),但正是这篇对Hexo维护的讲解,完美解决了我的问题,并把我对Hexo的认识提升一个水平。
三、对Hexo的深入了解
Hexo分为框架(源文件)和渲染文件,简单来说,框架就相当于一个转换工具,你写的文章是以md的格式存在于电脑上,而此时Hexo框架会把md文件转换为html文件,所以,我们最终在网站上面看到的都是Hexo渲染出来的前端文件。
这个认识很快在我查看了Gitee上面托管的代码后得到了印证,gitee上面所托管的代码,跟本地的Hexo的完全不一样,上面托管的就是Html静态页面,怪不得每次在本地编译后用localhost打开就是最新的代码,而托管在云端就会有缓存。
而文章中提到的维护,就是将Hexo的框架和渲染出来的文件一并储存在云端,这样,不管你是否换了电脑,只要把云端上面的框架clone一份在新电脑上这样就可以接着写文章,不会出现由于电脑的更换而导致博客无法更新的情况。
现在想想,原来我托管于Gitee上面只是渲染出来的文件,如果哪天不小心把电脑上的框架给删除,那结果跟自己的服务器一样,也是落得数据清空的下场,想想就头大。
四、重新部署Hexo
根据目前已知,我在Coding上面创建一个仓库,用于获取在Gitee上面的托管的代码,并托管这个网站,然后创建一个构建计划,实现了博客随仓库中的代码更新而实时更新,而浏览器缓存也就随之解决了。但是,此时托管的还只是Hexo渲染出来的文件,Hexo的框架还在自己的电脑上,说不定哪天就...我又开始对Hexo的维护进行研究,这时候我发现,在创建仓库的时候,有个模板是Hexo,那不就是说,在Coding上面直接就可以创建Hexo项目?好家伙,这叫什么白嫖,人家官方早就提供的有这个服务,按照官方的说明来看,后期还要收费。
看了收费标准,算不上贵,一个月也就几块钱。说干就干,我直接在Coding上面创建了Hexo,这时候Coding直接生成一个仓库和一个托管网站,就连构建计划都没让我写。这tm...感情是我忙了两天,人家一分钟就给自动生成好了...有点心塞
不过这个还真挺香的,按照说明,我把Hexo的框架Clone在本地,然后安装依赖,安装Hexo的一个插件(用于渲染),然后写一遍文章,hexo g && hexo d 一气呵成,我真佩服我的熟练程度(失败N多次总结出来的)但这时又出现了新问题,上传是成功了,但是在云端部署到时候出现了一个错误(具体错误不清楚)反正就是网站部署失败。我又看了看官方的说明文档,发现里面并没有提及安装这个插件,而提交方式是正常的Git命令,也并不是hexo g && hexo d 看到这,我恍然大悟。
原来,hexo g && hexo d 将md文件编译后提交到云端,而提交的文件也是编译后的文件,Hexo用的命令是正常的git push,也就是把所有hexo文件直接上传到云端,接着云端检测到仓库中的代码有更新,就会触发任务计划。此时代码就会在云端编译完成然后重新部署网站。
事情到这,我长舒一口气,自动更新和页面缓存的问题终于解决了!看着刚部署好的Hexo系统,甚是喜欢,没想到一个简单的Hexo框架居然还有这么多门道,好在我都给一一解决了。Coding还提供一个域名,可以直接访问网站,速度挺快的,几乎没延迟,而且还可以自定义域名,Coding提供Https服务,真的很人性。
那么你以为,到这里就算结束了吗?
五、编写两个自动化脚本
作为懒人的我,怎么受得了每次写文章和上传文章都要打开cmd命令窗口进行输入一大串的命令,既然自动化,那就自动化到底!我是这样想的:能不能让电脑自动帮我完成创建文章和上传文章的操作呢?答案肯定是“可以的”。最简单的方式就是写两个bat脚本,一键操作。因为之前我了解过linux脚本,试想一下,bat脚本应该和那个差不多,百度一下果然是!
然后,我就理所应当写了两个自动化脚本,只要双击就可以创建新文章并自动打开typora等着我去写,只要双击就可以自动上传到云端,然后云端自动更新网站,一切都是那么轻松。
谁让我本身就是一个懒人呢?
六、本文所涉及帖子和网站
为了方便别人,也方便自己,这里贴上文中所提及到的一些网站,其中一篇是自己之前写的用Gitee托管Hexo的教程。之后我也尝试将Hexo做成一个小程序,但是由于腾讯的限制(无法访问非营业网站)没法突破,也就暂时搁置了(没有放弃)
总结:事实证明,只要肯挖掘,就没有解决不了的问题