移动组博客的选型和构建

今天饿了么移动组首席表情官来和你聊聊这个博客系统是怎么做的,准备好了

首先,浩浩荡荡的二十来号人,总有些需求没地方发泄,大家有一句没一句地一聊,哎?咱弄个博客吧

那就弄吧,一没服务器,二没域名,三没什么文笔,不过谁说过来着,人有多大胆,地有多大产,很快咱就发现 Github Pages 一不要域名,而不要服务器,能拿来弄个网站呀。但说到要手写HTML,大伙的反映是这样的

什么年代了,食堂都有自动打饭机了,咱还能这么土吗。果不其然,找了一个玩意叫 Hexo,很快咱就把第一版网站给弄上线了。
上线后很快就发现一个问题,咱堂堂这么大组的博客,它长得怎么这么丑!

干了十多年装修工的我就出了个主意:咱给他重新装修一下吧。
老大一拍板:好,这也不失为一个馊主意。
于是除了首席表情官的身份,咱又多了一个身份叫首席装修工。拿起锤子镰刀,我就搞出了一个新的来,怎么搞的呢,且听我细细道来。

首先,咱得会一点 Node.js,搞清楚 Hexo是怎么干的。也不知道是它学 Jekyll还是 Jekyll学它,他俩都有几个共同点:

  1. 靠模板生成不同的页面的内容,靠配置生成不同的页面和路径,靠主题模板实现不同的外观 (这是废话,谁写都这么干)
  2. 都靠插件实现具体功能,每一个插件负责整个网站的不同部分,如首页、归档、文章等
  3. 核心向插件暴露 API,并且制定了载入不同类型插件的规则
  4. 我好像就能总结出上面3点

那咱就发现,要给它彻底装修一番,只要弄个主题就好了。

主题的也是考插件规定它的一些用法的,比如,咱这次写主题弄了一个插件来渲染 markdown语法、stylus的 CSS语法,EJS的 HTML模板,它们分别叫:

  1. hexo-render-marked
  2. hexo-render-stylus
  3. hexo-render-ejs

就这开头,咱再瞎也认识它们是干嘛的了。
然后呢,就是针对主题还有一些配置,写在主题目录下的 _config.yml里面,这个配置是会在渲染的时候载入到变量里面的,然后就能在模板里面取到了。
(此处省略1万字)很快,凭着多年的装修经验,这个网站就焕然一新了,大家对我投来崇拜的目光

这时候老大说了,这文章写了,也不知道谁写的,棒毛线。
这也难不倒咱们中华小当家,不就是弄个多人协作嘛,都是很基础地!怎么做呢?

  • 搞一个 Hexo插件,让它能渲染作者页
  • 在配置里面加入作者信息,并且弄了一个命令行工具,可以自动管理这些信息
  • 搞了一个工具,输入 github ID就可以可视化编写文章,自动管理作者信息,并且可视化地一键部署
  • 把这个工具用 Docker包了一下,放到了内网跑任务的机器上,团队都能访问,这样大家都可以从UI上写文章、发表了

最后,大家都可以从文章页点击进入作者页,看到自己的成果啦,是不是很简单呢

同样地,要做一个友情链接,也只需要写一个简单的插件,渲染页面,然后在配置文件里面写一写或者通过前面的工具自动管理友链的信息。
不过还有些地方还没做,比如:

  • https
  • CDN
  • 把它换成WordPress之类的动态博客系统 (谁叫咱穷呢)(PS:不要跟我讲 Ghost这种博客系统)(PPS:PHP是最好的语言)