搭建静态博客
站内链接:
Workflow
优势
首先, 让我们先了解一下大部分静态博客生成器
为何在过去几年迅速增长的原因以及静态博客生成器
的工作原理, 在Static Generator
上几乎可以找到每一种语言实现的静态博客生成器版本, 那么其
优势是哪些呢?
- 无依赖, 纯静态页面, 只需要很少的系统资源即可
- 部署简单, 一个 nginx 即可实现静态博客的正常访问
- 特别适用于个人开发者静态博客
那么静态网站的工作流程是怎么样的呢?工作流程大体分为如下的步骤:
- 读取源文件(例如约定为 markdown)
- 预处理资源(解析)
- 渲染模板(使用引擎进行渲染)
- 生成目标文件(HTML)
- 启动
工作流
第一步, generator 会读取约定 markdown 格式源文件, markdown 以灵活的自定义:源目录, 目标目录, 页面标题等
被个人开发者喜欢, 生成器一般都会读取 md 格式的文件.
第二步, generator 需要对读取的 markdown 文件进行资源预处理, 分离头部元数据和主题内容, 其步骤如下
- 解析头部, 使用 yaml-parser/json-parser 等解析对应格式的头部
- 解析内容, 使用 marked 解析为 HTML 标签
- 解析静态资源, 使用工具链(CSS 预处理器, 编译器, 打包器, 流程构建工具), 整合全部资源
例如对于头部:
1 | --- |
其会被解析成 js 语言:
1 | const result = { |
第四步, 将 parse 得到的 HTML 片段嵌入预先定义好的模板中(主题), 复用页面中的公共部分(导航栏,
侧边栏, 底部等), 嵌入变量(自定义配置)和静态资源
第五步, 清理目标目录, 将生成的文件输出到目标目录.
第六步, 那就是运行博客系统了:
- local server: 启动 node.js server 实时预览, 结合 live-reload 触发页面刷新(或者使用 webpack 热替换)
- file DB: 持久化部分数据(e.g. 博客发表时间,文件哈希值,文件修改时间),重新编译可以跳过未改动的文件
- log system: 记录编译过程和编译结果,增强 debug 可行性,按 log 层级格式化输出不同信息到控制台
- auto deploy: 整合 Git 和 WebHook,一键发布到 GitHub Pages 或者自己的网站上
静态博客搭建步骤
首先, 进行域名的备案
- 备案
- 域名解析
- 安全组或者防火墙策略
其次, 在成功配置域名之后, 则需要在本地搭建static generator tool
可以运行的本地环境, 确保能够
将 markdown 文件一键生成为 html 格式.
最后, 安装 web 服务器.
generatorj 介绍
目前比较火热的生成器有:
- jekyll: ruby, 构建效率慢, github page 页面, 历史悠久, 开源 9 年
- hexo: node.js, 构建速度一般, 个人博客和产品展示, 页面酷炫, 前端开发者居多
- hugo: go, 构建速度极快, 个人博客和产品展示, 开源四年, 后端开发者居多
其中 jekyll 优点:
- No Magic:简单易懂
- It “Just Works”:初始化网站配置,不需要为让用户操心
- Content is King:内容为王,这是用于应该真正关心的部分
- Stability:向后兼容,容易维护
- Small & Extensible:核心功能满足 90%用户的需求,其它功能使用插件形式,易于集成
这里理念被之后的静态网站构建器所传承. 而关于另外两个生成器, 见另外两篇文章:
hexo
引用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 狂想写作本!
评论