稍微翻了一下记录,发现这个更新我整整做了一年。
其实比较早的版本早就上线了,但是各种细节处理都没有做的很令我满意。
起因就是,评论系统这个用得非常少但是“如果没有的话又觉得哪里不对”的功能,的支持框架,野狗,翘了~
参考和相关文档
毫无疑问的是,我这个东西又是一个轮子,轮子的原型就是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用得实在太多了,失败了。
代码
最近还是保持了一种愿意写代码不愿意解释代码的状态,如果感兴趣的人可以和我交流。
方法还是比较简单,和原来的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了,然后就没有然后了。这个问题我还没想好怎么解决。