博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么我选择用 Github issues 来写博客
阅读量:6848 次
发布时间:2019-06-26

本文共 2797 字,大约阅读时间需要 9 分钟。

对于爱写东西的人来说,挑一个合适的博客平台是非常重要的。而作为一个 Web 开发者,我们肯定都希望能够拥有一个高度定制化的博客平台,用以展示我们独一无二的个性以及记录长久以来的学习工作等。与此同时,我们也希望这个平台可以让我们方便地发布内容,提供完整的点赞、留言等操作。在经历过 Hexo,Wordpress,自行搭建服务等一系列尝试以后,我最后选择了以 Github issues 来作为我的博客平台。

博客的基本能力

对于一个合格的博客平台来说,它主要提供了下列几种能力:

  1. 个人介绍 对于个人博客来说,它首先要支持展示博主的个人介绍。这个个人介绍里面可能包括了头像、昵称、联系方式等基本内容,能够让读者能够对这个博客的主人有一个基本的认识。

  2. 文章的撰写与展示 对一个博客来说,最重要的就是它的内容,也就是里面的文章。一个好用的博客平台应该具备方便的撰写文章的能力,让够让用户毫无负担地撰写、编辑自己的文章。此外,还必须能够文章的信息,比如展示标题、节选、封面,创建/修改时间,评论点赞数等等。

  3. 归档能力 一篇文章的撰写时间、内容标签/分类等都是不同的,如何按照不同的要求对这些文章进行归档整理,也是考验博客平台的能力之一。再者,当文章数量较多的时候,添加一个搜索的功能也能大大方便读者对博客的浏览。

  4. 博主与读者互动的能力 仅仅只有博主一个人自嗨可能难以激发写作的动力,如果博客能够提供博主与读者互动的能力,将能有效激励博主持续创作,更能提升文章的传播度——点赞和评论功能则是互动能力中最重要的功能之一。

经过上面的几个点,基本可以知道一个博客平台,其主要功能就是“展示自己,沟通外界”。在满足这个基础的前提下,它也应该具备方便操作,高度定制化的特点。

为什么不选择其他方案

在文章的开头我有提到,我曾经尝试过用 Wordpress,Hexo,自行搭建服务等途径去尝试维护博客。但这些尝试的结果均不合我意,最后无疾而终。归根结底,就是不够自由和方便。

举个例子,Wordpress 和 Hexo 都具备搭建一个主题漂亮、功能齐全的博客的能力,但是这些都必须要在它们所制定的规则下进行。如果我想 DIY 一个主题,或者加入任何我想要的新能力,都必须仔细翻阅它们的文档,找到对应的规则再尝试去实现,可谓是戴着镣铐跳舞。除此之外,要发布新的文章,动辄就要在本地跑命令行,实在是非常不优雅。更有甚者,如果希望为文章添加评论功能,还要费一大番周折,想必体验过的人都懂。

至于自行搭建服务,可谓是既自由又方便,想要任何功能都可以自己实现。但这种方案最大的缺点是成本较高。对于人力成本来说,服务器数据库配置、域名、备案等一系列操作非常烦人,甚至还要考虑告警、负载、宕机等一堆的运维问题。折腾多了,也没什么心思往里面写文章。对于金钱成本来说,买域名,买服务器也是一笔花销,尤其是当我们某段时间文章产出特别少的时候,总觉得白养了一台服务器……

选择 Github issues

首先是 Github,然后才是 issues。

作为全球最大的代码托管平台,又刚刚被微软收入麾下,其可靠程度是非常高的,基本不用担心存放在里面的数据会丢失(想想看国内说没就没的网易博客,百度贴吧等)。

在 Github 上我们可以精心编辑自己的账户信息,包括头像、昵称、邮箱、工作单位等等。

Github issues 提供了非常方便快捷的编辑能力,尤其是贴图。它支持通过拖拽、粘贴、选择的方式上传图片,图片会存放在 这个地方,且支持外链——这也意味着我们可以很方便地把 issue 的内容转载到其他的平台。

在 Github issues 里面,可以为某条 issue 添加点赞、爱心等互动标签(Reactions),也可以设置分类标签(Labels),更可以给 issue 添加评论(Comment)。

最为重要的是 Github 提供了一套满足了绝大部分需求的 API,囊括了 REST 和 GraphQL 的调用方式,这才是 Github 能够成为我们博客平台的大杀器,这个接下来会详细说明。

不难看出,Github issues 拥有着前文提及的一个博客平台所应具备的各种能力。接下来我们将以 Github issues 作为博客平台的管理后端,以 API 来实现和客户端的数据交互。

天生的前后端分离

关于 Github API 的授权和调试,可以查阅我的另一篇文章。

我们使用 Github issues 作为博客平台,也就是相当于管理后端。我们在管理后端里面撰写文章,设置标签,回复评论,然后通过 API 调用把数据传送给客户端。

几个比较常用的 v3 API 如下:

  • 获取登录用户信息(GET)

  • 获取仓库的 issues 列表(GET)

  • 获取某条 issue 的评论列表(GET)

  • 获取某条 issue 的点赞和红心等 reactions (GET)

  • 为某条 issue 提交一条评论(POST)

    Name Type Description
    body string Required. The contents of the comment.
  • 为某条 issue 添加一条 reaction(POST)

    Name Type Description
    content string Required. The reaction type to add to the issue.

当然你也可以使用 v4 的 GraphQL 接口,也是非常的方便,感兴趣的可以自行研究。

管理后端直接用现成的 Github issues 页面,那么客户端则使用 Github 为开发者免费提供的静态页面部署服务 Github pages。要使用这个服务,只需要开通一个仓库,然后在仓库的 Settings 里面找到 Github pages 并打开即可,默认会以 Master 分支的根目录作为静态资源目录,我们只需要把客户端的静态资源直接放置在这里就好。

开通了 Github pages 以后,便可以通过其提供的 URL 直接在浏览器里访问到博客了,而博客的数据则完全加载自 Github API。

通过已授权的接口,还允许提交评论等功能:

结语

总结一下,Github issues 提供了一个博客平台所需的的各项基本能力,与 Github 的可靠性, API 的全面性,Github pages 的便捷性结合在一起,都非常适合作为一个博客平台来使用。我基于 Github issues 的个人博客也已经上线,欢迎前来体验:

如果你也觉得不错的话,赶快给自己也搭一个基于 Github issues 的博客吧,期待与你的交流!

转载于:https://juejin.im/post/5ce53de85188252d46797fee

你可能感兴趣的文章
mysql 配置MHA
查看>>
Windows Developer Day - MSIX and Advanced Installer
查看>>
【tp5】ThinkCMF5框架,配置使其支持不同终端PC/WAP/Wechat能加载不同配置和视图
查看>>
spring security+freemarker获取登陆用户的信息
查看>>
[RxJS] Implement RxJS `concatMap` by Waiting for Inner Subscriptions to Complete
查看>>
ubuntu创建idea桌面快捷方式
查看>>
详解JNDI的lookup资源引用java:/comp/env
查看>>
如何在IntelliJ IDEA中使用Git .ignore插件忽略不必要提交的文件
查看>>
愿你走出半生,归来仍是Java Parser
查看>>
[转]决定人生的三种成本:机会成本,沉没成本,边际成本
查看>>
A Generic Particle IO Library
查看>>
Enterprise Library 系列教程
查看>>
windows下搭建iphone开发环境
查看>>
POJ 3414 Pots (BFS)
查看>>
利用vbs设置Java环境变量
查看>>
Ubuntu离线安装软件包
查看>>
线段树
查看>>
我们都曾经历过:生活教会我的8堂人生课
查看>>
推荐几本最好的web前端开发技术图书
查看>>
ZOJ 1015 Fishing Net(判断弦图)
查看>>