本博客是根据《开源软件开发与社区治理》课程所布置的第一次作业的相关要求所构建的。本文是本次作业中所要求的“总结报告”,旨在对本次作业的完成过程进行总结与反思。
本文首先将介绍本博客的内容与组成部分,其次将分别介绍博客主题的选取、博客页面布局、博客技术选择以及制作过程中所遇到的问题。
博客内容与组成部分
本博客用于摘录一些人文社科领域中的新观点、新解释、新现象的探讨,希望能通过摘录和积累来扩展自身的知识面与思想的广度与深度。
本博客由以下四个部分组成:
博客的主题
由于本博客的内容以长篇文章为主,在设计博客的主题时更加希望读者能专注内容本身而非附加功能,故本博客选择hexo-theme-melody
作为基本主题。
博客页面布局
总体而言,博客页面应遵循简洁的原则。以下
在首页,应在显眼位置显示本博客的名字、作者名,以及最近发表的文章。另外,还需要提供一些超链接来引导读者前往不同的页面(如归档页面和自我介绍页面)。在本博客中,首页约60%的内容用来显示博客名;在顶部拥有若干超链接,引导读者前往不同的页面。
在文章列表页面,使用了时间轴来列出文章列表,方便读者按照时间线线索来寻找往期文章。
在关于我页面中,使用简洁的页面来呈现自我介绍。
在文章详情页面中,顶部区域呈现文章的标题和创作时间,接下来直接呈现文章正文。页面左侧还对标题进行了索引,并添加了阅读进度功能,方便读者了解自己的阅读进度。
博客技术选择
本博客为静态博客,使用Hexo进行构建。Hexo 是一款基于 Node.js 的静态网站生成器,拥有丰富的插件生态和主题,可以用于快速创建博客和文档网站,并且通过简单的命令就能将生成的网页上传到 GitHub Pages 上。Hexo具有以下特点:
- 静态网站生成: Hexo 生成纯静态 HTML 文件,无需服务器端渲染,从而提高性能。
- Markdown 支持: 支持 Markdown 语法,允许用户轻松撰写内容。
- 主题系统: 提供广泛的主题选择,用户可以自定义网站的外观和布局。
- 插件生态系统: 拥有丰富的插件,可扩展 Hexo 的功能,添加各种特性,如社交分享、搜索功能等。
- 命令行界面: 通过命令行界面管理网站,提供简洁高效的工作流程。
安装并初始化hexo
安装Node.js和npm,随后在工作目录输入命令:
1 | npm install hexo-cli -g |
随后进行初始化:
1 | hexo init blog |
此时项目结构如下:
1 | ├── _config.yml |
其中
- _config.yml: 网站配置信息
- package.json:应用程序版本信息
- scaffolds:Hexo 会根据 scaffold 来创建文件
- source:资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。
- themes:主题文件夹。Hexo 会根据主题来生成静态页面。
随后启动本地调试:
1 | hexo s |
撰写文章
输入以下命令
1 | hexo new post new_post |
于是在./source/_posts
中创建了一个new_post.md
文件。编写该.md
文件,即可正常撰写文章。
部署至Github Pages
博客使用GitHub Actions自动构建博客内容,并将构建好的内容推送至ECNU-51265903094.github.io仓库以部署Github Pages。
简单来说,先将hexo工作目录中的相关内容推送至一个名为blog的私人仓库,每次blog仓库监听到push事件时,执行预先在blog仓库内设置好的Github Actions的相关内容,从而将推送到blog仓库的hexo工作目录相关内容生成并部署到ECNU-51265903094.github.io仓库。
首先,我们需在package.json
中指出我们需要hexo-deploy-git
包。随后,我们需要在./_config.yml
文件中完成部署的相关配置。
1 | # Deployment |
其中我们需要在Github的个人账户中一个申请<token>
,这样才能在Github Actions中以不登录的状态将经hexo生成的静态博客代码推送至ECNU-51265903094.github.io仓库。
随后我们需要在./github/workflows
文件夹中新建一个main.yml
文件,用于构建自动部署脚本。具体的Github Actions配置文件如下所示。
1 | name: Auto Deploy |
这样就能自动构建并部署博客了。