While the site is static, I’m not manually copying and pasting the header and footer to all the individual pages, or even writing in html. I’m using a “static site generator”. The generator works a lot like a server would: it takes my original blog entry data and my site templates and glues it all together outputting html. The difference between it and something like PHP, is it’s only doing it once.
Now there are a surprising number of “static site generators” out there, so I didn’t have to re-invent the wheel. This blog is currently generated using Hexo - “A fast, simple & powerful blog framework, powered by Node.js.”
Hexo is built using Node.js, a cross platform scripting engine that’s ridiculously easy to deploy and has a rapidly expanding community.
Hexo itself is fairly simple. It takes Markdown files - a simple plain text format - and outputs html using EJS templates. Because nodejs community has lots library options for converting markdown to html and parsing EJS templates, Hexo only has to manage the flow of the process, and doesn’t have to deal with the complicated parsing problems. It’s fairly simple to create custom plugins that support things other than markdown and EJS as well.
Because of of this simplicity, if Hexo is ever abandoned (not uncommon for an open source app), it won’t be too difficult to find or create a replacement.
If you’re interested in the site, feel free to check out the source code hosted up on github.