Tabula CMS
(又)因为旧博客看着太臃肿不顺眼,所以换成了最近新制作的,名叫 Tabula CMS 的系统上。
原理?
CMS 的全部后台就是个文件夹,.md 文件编辑好往里一扔,刷新界面,文章就被放上来。
你输入域名 -> 浏览器来要一个页面 -> Node 进程醒来,读一遍 posts 目录 -> marked 模块把 .md 的 Markdown 变成 HTML -> 结果送回给浏览器 -> 看到文章
不用查询数据库,没有构建队列,也无所谓缓存层之类的东西。
案例
文章
新建 posts/[名字].md,开写:
---
title: 我学会了自己上厕所
date: 2017-11-03
tags: [生活, 技术]
description: 文章概述
---
正文随便写。
如果懒的话甚至里面四个字段可以都不写。
- 不写
title→ 文件名就是标题; - 不写
date→ 可以当常驻内容,会被排在文章列表的最末端; - 不写
tags→ 没有标签,标签页里也找不到它; - 不写
description→ 自动从正文第一段截一段,还会把 markdown 记号擦掉。
草稿?自己存。
发布?自己上传文件。
代码块和高亮
请看VCR。
+++++++++[>++++++++>vast++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<++++++++++++++.>.+++.------.--------.>+.>.
3x反引号声明语言(比如 ```brainfuck),自动使用 highlight.js 模块上色。(不声明也行,高亮模块可以猜)
图片
图片随便放在能找到的地方,记住路径添加上来。图片的描述文字会变为可见的 description 放在下方正中处。

标签、归档和 RSS
只要文章拥有类别和时间标签,便可全自动处理。
分享小卡片
每篇文章都会带有 Open Graph 标签,链接分享出去会显示标题和 description 的小卡片。
不支持的内容
目前不支持,以后也不会支持。
- 评论——我讨厌维护评论区,不做。
- 后台管理——这么简单的系统不需要,不做。
- 数据库——实现需求最好的方式,就是让它不需要被实现。
- 草稿箱和定时发布——反正是自己写,想什么时候写好就什么时候写好,想什么时候发就什么时候传上去,不用做。
- 用户系统——想不到一个个人博客系统为什么要有这种功能,多人共同发布用标签区分或者最后做署名就好。
真的很快¹
| 请求 | 服务器处理 | 大小 | gzip 后² |
|---|---|---|---|
| 首页 HTML | 2.7 ms | 4.9 KB | 2.1 KB |
| 这篇文章 HTML | 7.3 ms | 14.7 KB | 6.6 KB |
| 归档页 | 2.7 ms | 3.4 KB | 1.6 KB |
| 标签页 | 2.6 ms | 2.8 KB | 1.3 KB |
| 整份 style.css | 0.6 ms | 6.9 KB | 2.0 KB |
「这篇文章」指你现在看到的整页 HTML,包含正文和 986 字节的内联 JS。
就在 7.3ms 的服务器处理时间里,它可以重读 7 篇文章、解析 frontmatter、渲染整篇 markdown、在服务端完成代码高亮。
¹ 统计不包含公网和 TLS。但是考虑到页面大小,实在是没什么可等的。
² gzip 可选。