15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > Github Pages + jekyll 全面介绍极简搭建个人网站和博客

Github Pages + jekyll 全面介绍极简搭建个人网站和博客

时间:2023-05-30 04:15:01 | 来源:网站运营

时间:2023-05-30 04:15:01 来源:网站运营

Github Pages + jekyll 全面介绍极简搭建个人网站和博客:本文,将会全面介绍一下如何使用Github Pages + jekyll搭建个人站点。所谓极简的意思,就是不用使用git和本地构建jekll服务,直接在Github网站上编辑设置即可,但会涉及到jekll的一些配置和编程控制。

可以参看我的网站模板:https://scottcgi.github.io 使用了github内置的主题修改而成。
主题目录如下:

第一步,建立Github仓库

首先到这里Github,创建一个仓库。




仓库名称有固定的格式: username.github.io,其中username必须是Github账户的用户名(我的是scottcgi),http://github.io是固定的,这个地址将会成为个人站点的网站地址。另外,我们可以勾选Initialize this repository with a README,让仓库自动创建一个README.md文件,我们用它来做站点的首页(当然也可以不创建,后面自行创建,或是建立index.html也行)。

注意: username如果不是Github账户名,这个仓库就会成为username.github.io的子站点,比如访问地址会是:username.github.io/aaa.github.io。可见,username.github.io是Github默认分配给你的域名,同名仓库即代表着默认网站内容。而username.github.io/仓库名称,是用来访问你的其它仓库的地址。

第二步,设置仓库开启Github Pages

进入仓库设置界面,如图。

这里能够重新修改仓库的名称,比如这个仓库内容是fork别人的,就可以在这里修改成自己的username.github.io名称。

Setting页面下有Github Pages的设置选项。绿色表示部署成功,每次修改仓库内容,都会出发Github jekyll重新编译部署,需要1-2分钟的时间,更新才能体现。如果有编译错误,包括js,css,html,markdown语法问题,都会显示红色以及错误页面和行号,同时会发邮件通知。其中,Source有以下几个选项:

如果是username.github.io只能使用主分支,其它仓库项目可以选择其它两个。接下来Choose a theme是Github提供的内置的网站主题,选择即可应用无需其它设置。Custom domain是自定义域名,本文暂不讨论。

第三步,使用Github内置主题

选择好主题,过一会刷新网站地址就已经能看到效果了,而在Code页面仅有两个文件。


编辑README.md文件的内容,就会默认显示在网站首页,_config.yml 是jekyll的全局配置文件,现在里面只有一句话,theme: jekyll-theme-modernist。我们可以手动修改这个theme主题配置,网站就会应用不同的主题。

Github内置支持的几个主题,官方的仓库在这里:https://pages.github.com/themes,每个README.md里都有介绍如何设置。

那么我们现在就有两种方法来使用这些主题:

另外,更多主题可以参看这两个地址(不要挑花眼了): jekyll themes 和 jekyll wiki site。

第四步,jekyll的目录结构

我们只需要关注几个核心的目录结构如下(可以自己创建):

更多更详细的目录结构参看jekyll官网:https://jekyllrb.com/docs/structure

第五步,jekyll的模板编程语言Liquid的使用

---myNum:100 myStr:我是字符串---使用{{ page.myNum }}{{ page.myStr }} 访问。

{% if site.title == 'Awesome Shoes' %} These shoes are awesome! {% endif %} {% if site.name == 'kevin' %} Hey Kevin! {% elsif site.name == 'anonymous' %} Hey Anonymous! {% else %} Hi Stranger! {% endif %}{% for product in collection.products %} {{ product.title }} {% endfor %}

第六步,使用_config.yml文件设置jekyll

如果不是fork别人的仓库,就需要自己创建一个这个文件。然后,我们就可以配置一些默认的属性来控制jekyll的编译过程。更多详细的内置属性详见:https://jekyllrb.com/docs/configuration/default

同时我们可以自定变量,会自动绑定到site对象上,比如我们可以把导航配置到_config.yml中:

nav:- name: Home link: /- name: About link: /about.html// 以下嵌入页面,page.url以 "/" 开头<nav> {% for item in site.nav %} <a href="{{ item.link }}" {% if page.url == item.link %} style="color: red;" {% endif %} > {{ item.name }} </a> {% endfor %}</nav>当然,我们也可以把一些数据单独放入一个yml文件,然后放在固定的数据文件夹_data下,比如_data/navigation.yml,这样访问这个文件的数据对象就是site.data.navigation

第七步,_layouts模板配置

_layouts文件夹存放的是页面模板,默认需要一个default.html,什么意思?就是说,layout提供一个页面的布局框架,这是固定的模式,包括样式、结构、布局、脚本控制等等。然后,我们在用其它md或html文件去动态填充这个框架,这样就形成了一个完整的页面。比如我的default.html页面如下:

<!doctype html><html lang="{{ page.lang | default: site.lang }}"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> {% seo %} <link rel="icon" href="https://avatars0.githubusercontent.com/u/1797320" type="image/x-icon" title="scottcgi"> <link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision | relative_url }}"> <script src="{{ '/assets/js/scale.fix.js' | relative_url }}"></script> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> </head> <body> <div class="wrapper"> <header {% unless site.description or site.github.project_tagline %} class="without-description" {% endunless %}> <h1>{{ site.title | default: site.github.repository_name }}</h1> <p>{{ page.description | default: site.description }}</p> <ul> {% for item in site.nav %} {% if page.url == item.link %} <li style="background-color:#069"> <a href="{{ item.link }}"> <strong>{{ item.name }}</strong> </a> </li> {% else %} <li><a href="{{ item.link }}">{{ item.name }}</a></li> {% endif %} {% endfor %} </ul> </header> <section> {{ content }} </section> </div> <footer> <p>{{ site.copyright | default: "copyright not found in _config.yml" }}</p> </footer> </body></html>当然,我们也可以不使用 {{ content }} 来填充模板,而是使用_includes的页面来代替{{ content }} ,但这样不够灵活,因为使用 {{ content }},我们可以在每个页面单独设置对应的layout模板。

第八步,md和html页面编写

站点内容页面,可以使用markdown或html来编写,但markdown编写的md文件,在浏览器地址访问的时候依然使用html文件后缀。推荐使用markdown来书写内容,语法参见:Github md 示例和 Github md 教程。比如下面这个About.md页面:

---layout: defaulttitle: About---# About pageThis page tells you a little bit about me.layout: default 就是告诉jekyll这个页面使用哪个模板,即这个页面会放入哪个模板的{{ content }}。当然,我们可以在_layouts文件夹下提供多个不同的模板,然后根据需要不同的页面使用不同的layout

页面可以放在任意位置和目录,访问的时候从站点域名开始,带上目录名称,再次注意需要使用html结尾。如果想要自定义浏览器的访问路径,可以参看详细设置:permalinks。

md和html页面的区别:

至此,我们就可以在github上,新建md文件然后编辑提交,等待几分钟编译生成之后,就可以在浏览器里看到页面内容了。

第九步,博客文章编写和管理

我们自然可以新建目录,提交文章,然后添加一个文章列表页面。但我们也可以把这些交给jekyll的内置机制来完成,因为它提供了一些方便的内置文章管理功能。

_posts文件夹是内置的放置文章的目录,我们可以将固定格式year-moth-day-name.md名称的md文件放到这里。比如新建一篇md的博客文章放到_posts目录下:

---layout: post--- 这是一篇博客文章。---layout: default---<h1>{{ page.title }}</h1><p>{{ page.date | date_to_string }} - {{ page.author }}</p>{{ content }}可见,模板页面本身也可以使用模板,这里post使用了default模板,而这里{{ content }} 就会填充_posts下面编写的页面(如果页面使用了layout: post模板)。

---layout: defaulttitle: Blog---<h1>Latest Posts</h1><ul> {% for post in site.posts %} <li> <h2><a href="{{ post.url }}">{{ post.title }}</a></h2> <p>{{ post.excerpt }}</p> </li> {% endfor %}</ul>

第十步,Github Pages的限制

Github Pages 并不是无限存储和无限流量的静态站点服务,一些限制如下:

结语

在实际的使用过程中,我发现完全可以在Github网站上,编写md和html页面,修改js和css文件,来完成站点的设置和搭建。只不过每次修改都要触发Github jekyll的编译行为,有点慢(不知道是不是增量编译),没有在本地修改调试的速度快。

更多jekyll详细的设置和功能,参看官方网站的文档:https://jekyllrb.com/docs

关键词:

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭