最早期的个人站点都是纯 HTML 的文件。后来发展出了动态脚本语言,管理员填写内容,由脚本动态输出页面给最终用户。之后是动态博客系统,像著名的 Wordpress, 在网站的后台输入内容,用户访问的时候动态的组合,输出内容给用户。再往后就发展到了在后台系统中填写博客或网站内容,由脚本生成组织好的静态的 HTML 页面,或直接在文件系统中用比 HTML 简单的标记语言如 Markdown, ${\LaTeX}$ 等直接编写文本文件,再由脚本生成静态页面发布的过程。
顾名思义,博客类的内容发布系统的主要功能就是发布内容,并将内容合理的归类,有效的组织,最终呈现给访问者。使用 Wordpress 之类的博客软件时无非就是那么点需求:在写文章的位置把内容用可视化编辑器写进去,然后加一些翻页,分类,标签,以及留言功能。博客软件的出现大大的简化和降低了 HTML 方式的烦琐和复杂。
08 年 11 月,Github CEO 发表了一篇像黑客一样写博客的文章将写博客拉回到了介于 HTML 和全动态软件之间的一种形式:使用比 HTML 语言简化的标记语言的纯文本文件作为文章的主体,并在文件中设置好文章所属的分类和标签等,由脚本根据文件中的设置和模版的配置生成组织好的静态的 HTML 文件给用户。留言部分可使用第三方评论系统:Disqus, 友言,新浪微博等。
与传统的博客软件相比,这种做法有几个特点:
这种写博方式对程序员来说门槛还是很低的,只不过灵活性略差,比如像这样加密一段内容;如果站点规模较大,页面较多,每次生成所有页面的时间也很很长。但是作为个人博客类的纯内容组织和发布还是非常简单和足够了,也的确更能燃起我记点笔记,写点东西的欲望——文章内容都放在本地给我更安心的感觉,Markdown 可以让人更专注于内容而不是字体等排版问题。很像 $\LaTeX$ 和 MS Word 的区别。
从HTML => 动态生成 => 动静内容分离 => 使用脚本生成静态化内容(将内容一次性以文件形式缓存到硬盘上)。这样的发展路径和 Web 的发展看上去很一致。
Web 在动静分离后分化出一种前端使用静态化页面,JS 异步到后台接口请求数据动态渲染的方法,再进一步发展可能会是 noBackend架构,个人认为这种架构可以减轻部分后端的压力,把算力分散到用户机器上。
将来的纯发布类站点比如官方主页,产品说明等完全可以考虑以类似于 Jekyll 这种脚本生成纯 HTML 的方式。所带来的是更好的安全性,更方便的部署维护和性能的提升。