首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

为什么我选择用 Github issues 来写博客

  •  
  •   jrainlau · 151 天前 · 5192 次点击
    这是一个创建于 151 天前的主题,其中的信息可能已经有所发展或是发生改变。

    image

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

    博客的基本能力

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

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

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

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

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

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

    为什么不选择其他方案

    image

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

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

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

    选择 Github issues

    首先是 Github,然后才是 issues。

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

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

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

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

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

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

    天生的前后端分离

    关于 Github API 的授权和调试,可以查阅我的另一篇文章《基于 Github API 的图床 Chrome 插件开发全纪录》

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

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

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

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

    image

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

    image

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

    May-22-2019 19-50-23

    结语

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

    https://jrainlau.github.io/#/

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

    50 回复  |  直到 2019-05-24 11:49:46 +08:00
        1
    loading   151 天前 via Android
    我的也是用 gayhub issues 的,用的 mirror
    http://sync.sh

    话说好久没写了……
        2
    kingcos   151 天前 via iPhone
    我本来直接用的 Issues,还做了个小程序…后来还是换成了 Hugo😂

    丢站跑…

    https://maimieng.com/
        3
    acehow   151 天前 via Android   ♥ 1
    我选择不写博客
        4
    LeonKennedy   151 天前   ♥ 26
    您哪位
        5
    Fazauw   151 天前
    不错,再配个域名,当真是不错(这样算不算滥用 GitHub ?)
        6
    junjieyuanxiling   151 天前 via Android
    用 issue 写博客,你就不怕 GitHub 反滥用送你的博文上天?
        7
    able   151 天前
    我用 weibo
        8
    vincentnifang   151 天前
    “。。。又刚刚被微软收入麾下。。。”,让我想到了 msn space,你甚至可以在主页面里面插入自己个性化的 html。学生时期花了好多心思,可惜最后挂了。。。
        9
    CEBBCAT   151 天前   ♥ 1
    @LeonKennedy #4 太没品了,哈哈哈
        10
    loading   151 天前 via Android
    @junjieyuanxiling 请研读一下 github 的相关文档再说这事。
        11
    CEBBCAT   151 天前
    总结部分怎么说呢……虎头蛇尾吧,要是能总结好就不用去看正文了。
        12
    ysc3839   151 天前
    选择 WordPress 和 Hexo 是为了避免重复造轮子吧?选择现成的那自然会有所限制,因为这像是在别人的地基上建房。
    但是用 GitHub issue 写博客的话还得自己开发一套网站系统,对于有时间精力能力的人来说问题不大,但对于没有这些条件的人就很麻烦了。这可能也是很多人选择 CSDN 等博客网站的原因,他们可能并不研究前后端开发。
        13
    azuki   151 天前 via Android
    支持 rss 吗,别人要怎么知道你发了新博文呢
        14
    notreami   151 天前
    为什么我选择用 Github issues 来写博客
    为什么我选择用 Github issues 来写博客
    为什么我选择用 Github issues 来写博客
        15
    Weixiao0725   151 天前
    有个问题是,这种页面不好写数据公式吧?

    其实可以用 jupyter 写,然后传到 GitHub 上,好像 GitHub 自动可以解析 .ipynb 的文件,
    也可以用 https://nbviewer.jupyter.org/ 进行展示。
        16
    Akkuman   151 天前 via Android
    收录是问题
        17
    hanxiV2EX   151 天前 via Android
    我也是用的 issues 写的,但是没啥可写的。https://blog.hanxi.info
        18
    janus77   151 天前 via iPhone
    以前用了一段时间,总感觉怪怪的… issue 开放,等于编辑后台公开了,总是怕别人对你的内容做什么改动,或者不习惯后台被人看到。
    另外提新 issue 也是自由的,可能会有不是作者创建的文章。
    再有就是主题和插件的丰富度了
        19
    dobelee   151 天前 via Android
    如楼上,出了个争议话题,你的 issues 就炸了。😏
        20
    lulinux   151 天前 via Android
    对于这些国外空间,打开速度是个硬伤。
        21
    ningfeng   151 天前
    Github issues 不是用来当过论坛的吗?
        22
    fx   151 天前
    gitpress
        23
    not4jerk   151 天前
    我的[jekyll 博客]( https://tech.mojotv.cn) 瑟瑟发抖(评论模块垃圾了 本来尝试接入 github issue 做评论模块失败了)
        24
    barrelsoil   151 天前 via Android   ♥ 1
    @LeonKennedy 王垠吧?
        25
    jingyulong   151 天前
    日经博客贴,博客超过五年算我输!
        26
    novagin   151 天前
    听说 Github 更新用户协议 开源代码也要受美国出口管制,是在 https://bbs.z01.com/PItem?id=16905 看到的
        27
    spygg   151 天前 via iPhone
    @not4jerk 用 gittalk 啊,我的博客,spygg.github.io
        28
    ritaswc   151 天前 via Android
    我觉得吧,大多数在研究搭建博客的人,很少更新博客,是不是本末倒置了
        29
    Davic1   151 天前
    我觉得 Ghost 这个平台不错啊, 搭起来比 WordPress 方便 ,后天写起文章来支持多种格式~ 前台界面也不错 https://p1ayground.online/

    Github issue 用来记记自己的经验总结还好, 用来写 blog 总觉得怪怪的
        30
    FakeLeung   151 天前
    不知道你有没有认真仔细的看过 github 的授权。

    基本上都是 rw 的。也就是说,我拿到 token,几乎可以任意操作你的帐号了。

    不授权?那么连 comment 都发不了。
        31
    not4jerk   151 天前
    @jingyulong 机器人日更算不算?
        32
    RLinux   151 天前
    @not4jerk 你这个风格很不错啊~怎么搞的 我也想搭个这样的
        33
    RLinux   151 天前
    @not4jerk 哈哈哈哈 看到了 jekyll
        34
    jingyulong   151 天前
    @not4jerk #31 在下输了。。。。
        35
    zyh94946   151 天前
    就当评论这点来说感觉很鸡肋,本来大家的评论欲望就不大,还的登录 github 才能评论。。
        36
    kokdemo   150 天前
    我觉得 github 当 blog 最大的问题是加载不够快……
        37
    jevirs   150 天前
    @LeonKennedy 会说您就多说点
        38
    opengps   150 天前 via Android
    我还是选择自建博客服务器,起码每个月的广告够一顿饭钱
        39
    not4jerk   150 天前
    @RLinux 博客 github 有源代码地址
        40
    jrainlau   150 天前
    @Fazauw 看了相关条文,不算
        41
    jrainlau   150 天前
    @ysc3839 对,我这个思路也是需要 web 开发基础为前提
        42
    jrainlau   150 天前
    @azuki 还没研究过。。。
        43
    cmlanche   150 天前
    @jrainlau 如果我想 DIY 一个主题,或者加入任何我想要的新能力,都必须仔细翻阅它们的文档,找到对应的规则再尝试去实现,可谓是戴着镣铐跳舞。

    WordPress 有 elementor ( https://elementor.com/)等 pagebuilder,你想要什么样子的页面都可以做,而且非常方便
        44
    jrainlau   150 天前
    @janus77 除了仓库 owner,内容都是不允许他人修改的。至于别人提交的 issue,我会在博客主页过滤掉
        45
    jrainlau   150 天前
    @cmlanche 哇塞现在有这个!以前我玩的时候还没。。。
        46
    stebest   150 天前
    萝卜青菜,各有所爱而已
        47
    jxf2008   150 天前
    @jingyulong
    6 年前停更的博客,我现在加篇文章上去![]( )
        48
    jingyulong   150 天前
    @jxf2008 #47 博客竟然还在。。。。。在哪托管着呢?
        49
    jxf2008   150 天前
    @jingyulong
    csdn 的
        50
    cmlanche   149 天前
    @jrainlau 是的,我也是去年才发现的
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4292 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 02:28 · PVG 10:28 · LAX 19:28 · JFK 22:28
    ♥ Do have faith in what you're doing.