Jekyll 中使用 Github Issue 部署评论系统

2019-03-15 17:00:00   技术   javascript jquery GithubAPI

稍微翻了一下记录,发现这个更新我整整做了一年。

其实比较早的版本早就上线了,但是各种细节处理都没有做的很令我满意。

起因就是,评论系统这个用得非常少但是“如果没有的话又觉得哪里不对”的功能,的支持框架,野狗,翘了~

参考和相关文档

毫无疑问的是,我这个东西又是一个轮子,轮子的原型就是imsun的gitment。 原来我也想直接就拿来就用的,但是我不喜(怎么)欢(会)用npm,于是就照着这个想法,读着Github的API,直接自己开写。 最近去看了下imsun的Demo,发现他那儿貌似https证书过期了,不太好用了。

参考imsun的内容包括但不仅(其他)限(我)于(忘了)以下列出来的这些:

  • Idea:主意完全是别人的
  • Login的逻辑: 我纠结了好久怎么总是登陆不了,查文档也搞不定,最后是抄了他的login URL才搞定的。 相关的文档好像就是在这里
  • CORS的header的修改:相关的文档好像就是在这里。事实上就是要弄个东西可以改一下request的header,但是jekyll好像不太好弄的样子。我完全fork了imsun的node server,自己在Azure上面搭了一个。这个是免费的,所以如果有其他人要用的话也最好自己搭一下,还方便配置http或者https。因为搭这个东西,我还被Azure中国的客服给关心了一下。

其他用到的相关文档有:

依赖项

  • JQuery:我很想把它拿掉,但是因为ajax用得实在太多了,失败了。

代码

:arrow_right: 项目代码 :arrow_left:

最近还是保持了一种愿意写代码不愿意解释代码的状态,如果感兴趣的人可以和我交流。

方法还是比较简单,和原来的firebase comment有点类似。

  • 整个初始化:

GithubCommnets.Init(owner, repository, clientId, clientSecret, callback)

  • Github账号相关:

GithubCommnets.User.Login(redirectUri)

GithubCommnets.User.Logout()

  • 评论相关:

GithubCommnets.Comments.Get(issueId, callback, page)

GithubCommnets.Comments.Add(issueId, commentText, callback)

GithubCommnets.Comments.Count(issueId, callback)

  • 其他工具:

GithubCommnets.Emoji.Parse(text)

缺点

  • 目前每次新写一次文章我就需要手动去创建一次issue, 然后把issue号填写到jekyll的帖子里面去。
  • 对于分页上面的问题,我还是很不满意。一个问题是我没有搞定让github api 返回按照时间倒叙。另一个问题是,因为以前用的野狗/firebase的评论,我重写了一套js把它们都合并过来了,混杂在一起UI总是有点毛病。
  • Github API调用还是有一定的频率限制。我在调试的时候碰到若干次,以为打开文章列表页太过频繁,获取评论数量的时候调用API超过了它的设定,直接返回404了,然后就没有然后了。这个问题我还没想好怎么解决。
评论共