Barnett's Blog

Tabula CMS

716 words · 2 min read 技术 随笔

(又)因为旧博客看着太臃肿不顺眼,所以换成了最近新制作的,名叫 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 放在下方正中处。

![这里写的字会显示在图片下面](/images/demo.svg)
这里写的字会显示在图片下面

标签、归档和 RSS

只要文章拥有类别和时间标签,便可全自动处理。

  • 标签总览——每个标签几篇文章;
  • 技术——只看某一类文章;
  • 归档——按年、按月排布,看看自己当年当月写了什么;
  • 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 可选。

← All posts