从GITalk到Github Markdown

·

1 min read

gitalk_index

gitalk是一款借助github issue构建的博客评论的插件。它合理的利用应该是:当你在github上开源了一套blog系统,你部署一套自用或者作为demo上线时,可以直接将附属的issue模块作为评论引入你的网站。

如何得到自己的gittalk

申请自己的app

这个页面去创建自己的app:

1.app name就是仓库的名字,这是issue依附的目标,没有就新建一个。不能乱填否则评论模块调用的时候404。<br> 2.认证回调链接跟网站域名一致就好。

整合到目标页面

在目标页面放一个div比如

  <div id="gitalk-container"></div>

引入样式和脚本

  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
  <script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>

脚本配置参数进行渲染

  const gitalk = new Gitalk({
    clientID: '申请的app得到id',
    clientSecret: '申请app得到的secret',
    repo: 'issue依附的仓库名称',
    owner: '仓库所有者名称',
    admin: ['与仓库所有者一致'],
    id: "当前页面标识,通常为文章id",
    distractionFreeMode: false
})
gitalk.render('gitalk-container');

从此解决了我博客重构遗留的评论和留言块没做的问题。

从gitalk到借用github markdown接口

gitalk是支持md语法的,现在到处都是md的身影,清新简洁,我原来用ueditor每次排版校对都花很多时间。那能不能顺手把md用上?

markdown编辑器的选择

md选编辑器主要两种,在线免费版和桌面IDE+插件版,可以看看这篇markdown 编辑器调研参考选择。 在线版本我推荐Editor.md。桌面客户端推荐vs code,都很好用。

markdown的解析

markdown要用在自己做的博客里最大的问题不是编辑,而是解析,不能render成html再好也干瞪眼。网友推荐的几个js解析器都不喜欢。 然后我就想到了gitalk支持的md解析和预览都跟官方page极为相似,怎么实现的呢?

network一看,发现了github官方的markdown api。用postman发过去,不需要认证直接给text就返回html了。

整合前先做个html模拟可行性:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>gitmd test</title>
</head>
<body>
    <textarea id="source"></textarea><br>
    <button id="getMd">GetMD</button><br>
    <hr>
    <div id="content" class="gt-container markdown-body"></div>
</body>
<link href="https://unpkg.com/primer/build/build.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script type="text/javascript">
    $(function(){
        $('#getMd').click(function(){
            $.ajax({
                url:"https://api.github.com/markdown",
                type:"POST",
                data: JSON.stringify({
                    "text": $('#source').val()
                }),
                dataType:"html",
                success:function(data){
                    $('#content').html(data)
                }
            });
        });
    });
</script>
</html>

效果非常nice,那么我只需要用vs code编辑文章,然后利用这个接口github就给我render回来了

注意:

1.这里我页面渲染这部分render好的html还是沿用了gitalk截取的样式,是与github官方高度相似但并非官方的。gitalk的作者好像说是这个项目<br> 2.后面我找到了据说是Jekyll博客在用的高仿github pages样式的项目。<br> 3.如果是Hexo这种静态博客本身会借用github pages样式,会跟gitalk这小块样式冲突,要处理css优先级。

其他问题

1.github的这个转换接口是不支持流程图和公式的,以github的体量,大家用起来也没有太大这方面需求,me too。<br> 2.不过公式的话可以用这个网址去生成转换,然后选svg,在底部框中得到链接原,svg本身就是代码。<br> 3.markdown语法对图片非常不友好,很多网友的用法中都夹杂了html标签,充满了妥协。<br> 4.跟原博客样式冲突的问题,我还的花点时间分隔优先级。<br>