Github可以建立个人静态网页,虽然只能写写博客,但省去了搭服务器、申请公网ip、买域名等复杂的步骤。
Github page和Jekyll介绍
Github page建立个人主页
操作也很简单,官方教程说得很清楚
- 创建一个公库,叫做
USERNAME.github.io
,这里的USERNAME
是你的github账户名 - 在库的setting里选择一个theme,也可以用其它的Jekyll theme,我这里用的就是一个叫NexT的第三方主题
- 按照主题教程修改
_config.yml
和index.md
两个文件即可编辑网页风格和主页内容 - 已经可以了,在浏览器中输入
USERNAME.github.io
,就能打开你的主页了,每次修改后大概要等1-2分钟才会完成网页同步
每个仓库可以有一个Github page
(to.be.continue)
Jekyll
这是一个从markdown等文本文件生成静态网页的网页编译器,是基于ruby语言的,可以在本机装一个Jekyll,然后编译网页,host一个自己的服务器。但我没装,Github会自动编译USERNAME.github.io
这个库里面的文件,然后更新到对应的个人主页上。
Jekyll拥有各种各样的theme,github原生支持不到10种,功能都非常简单,也比较丑,建议使用第三方的主题。我这个站使用的是NexT。实验室建站可以考虑使用YosefLab的同款模板
自动生成静态网站的工具还有Hexo和Hugo等,详见Jekyll / Hugo / Hexo 比较。但我认为用Jekyll的主要好处是github支持直接托管网站,这样一方面不需要自己维护服务器,另一方面,其他人是怎么写博客的,源码你都能在对应的github repo里看到,省去很多学习成本。
撰写博客
最详细的教程当然是Jekyll官方文档,这里只记录一些很重要的,以及文档里没有的知识点。
博客文章规范
文章用markdown写,也支持一些其它格式,文件要放在_post
文件夹下,命名要符合下面的规范
1 |
|
md文件开头要有一段yml信息,对于博客文章而言大概是这样
1 |
|
date的+0800表示时区在东八区,不能省略,如果时间设定成未来时间,Jekyll在编译时会跳过这篇文章,详情见使用Jekyll时遇到的时区问题。
头文件后,用markdown语言编写即可,markdown的编辑器有很多,推荐使用vscode,详细教程
缩略展示
- 在_config.yml文件里,设置
excerpt_separator: <!-- more -->
- 在文章中想要截断的地方加上
<!-- more -->
,则从主页看到的文章会显示这段之前的文字,展开阅读下文
代码高亮
markdown的代码是用`键,即~
下面的那个,把代码框起来,多行的话则是用三个`前后框住,在前面三个撇之后声明使用的语言就可以按照该语言的格式高亮。
1 |
|
(btw,上面这段是通过在每行代码前面加上四个空格打出来的,在markdown里这叫做“代码围栏”) 显示效果如下
1 |
|
Jekyll支持另一种高亮方法,在正常的markdown预览器中无法显示,但编译成网页后显示正常,而且可以切换高亮风格(不过我觉得原生的很够用了)
1
def foo puts 'foo' end
插入图片
和markdown一样,Jekyll是可以插入网络图片的
1 |
|
如果要插入自己的图片,就把图片上传到博客repo根目录的/assets
文件夹里,再用相对目录索引
1 |
|
插入视频、pdf、html文件
这些都是通过在markdown中插入html代码实现的,最重要的是<iframe>
这个组件,它可以插入各种各样的东西。
<iframe>
插入的内容很多在vs-code的markdown预览器上无法正常显示,但push到github后,主页上就能显示了,暂时还不知道为什么。
插入视频
插入bilibili视频
先获取视频的cid和aid,在下面的代码中修改这两项,再把修改后的html代码加到md文件中想要视频出现的地方即可
1 |
|
插入youtube视频
直接在youtube页面点击分享 -> 嵌入,复制那段<iframe
开头的html代码,放到md文件里就行
插入微博视频
1 |
|
src换成微博视频右键点击“复制链接地址”得到的链接
插入pdf、html文件
把上面某段iframe中的src改成文件路径即可
1 |
|
插入思维导图(mindmap)
markdown的多级标题天然地很适合思维导图,这里可以用一个markmap插件去做自动转换。有两种用法,可以在线转换并导出成html或svg文件,又或者可以安装它的vs-code插件。打开mindmap预览并export html。然后用插入html的方法将其放到文章里。建议稍微调整一下padding,让导图面积大一点,同时为了不影响排版,做一个隐藏点击展开。
1 |
|
Click to view mindmap!
这个页面中的思维导图始终调不成满意的样式,还是单独搞一个html页面更好看一点
1 |
|
Click to view mindmap in a new tab!
评论功能
这里建议使用gitalk,因为其它支持的要么停止服务了,要么被墙。gitalk本质上是在github.io这个repo里提issue,所以只要网页能访问,评论就能打开。
- 进入github -> Settings -> Developer settings -> OAuth Apps -> New OAuth App,或者直接点这里
- 填上面网页里的表,除了Authorization callback URL一定要填
USERNAME.github.io
,其它都随便填 - 按
Register application
按钮,得到Client ID
和Client Secret
. _config.yml
里,按照刚才得到的信息和你的个人信息填写如下内容:1
2
3
4
5
6
7gitalk: enable: true clientID: Client ID clientSecret: Client Secret repo: USERNAME.github.io owner: USERNAME admin: [USERNAME]
- 把
_includes/comments/gitalk.html
的内容用这个文件里的内容替换。这是为了避免文章名太长导致的报错,详情见这里 - 可以了,每篇文章需要作者开一个Issue,然后其他人才可以评论(在admin里的人就可以开Issue)。也不用特地去开,上传一篇博客之后,拉到最底下第一次加载评论区的时候就自动有一个新Issue了