Go-Pages
rootpath 为多域名服务器绑定目录的 package. 效果上有点像 URLRewrite 的一个子集. 仅对 进行分析, 匹配成功设定相应的静态文件目录, 内容目录, 模板目录. 匹配失败拒绝访问或者不做任何操作.
RootPath 让 Go-Pages 博客支持子域名(站群)或者 CNAME (绑定域名)支持.
static
static 在设定好的静态文件目录下, 响应 URL.Path
请求的静态文件, 尝试发送对应的 Gzip 预压缩文件 pathto/URL.Path.gz
. 如果没有找到 static 不产生 404 , 它什么都不做.
不产生 404 有很多好处. 基于 Martini 的 Handler 一旦产生输出就会结束响应过程, 不产生 404 就可以继续进行处理, 比如自定义 404 页面, 比如进行动态 Gzip 压缩, 然后再交给 static 进行输出, 又或者那根本就不是个静态页面, 交给后续的 Handler 处理, 如果最终无法匹配, Martini 会执行 .
包提供了基本 Liquid 模板支持. Jekyll 对 liquid 其进行了一些扩展, 如果要完全兼容 Jekyll 是个庞大的工程. 但是, 有必要实现一些如 Global Variables 之类的. 用到的时候再分析.
MarkDown
轻量文本标记语言可以让书写者专注文章内容, 而不是为版式费神, 很适合书写博客. 有多种格式可选. Go-Pages 暂时支持最简单的 MarkDown 格式, 在前后端都要有所支持.
前端支持 MarkDown 的编辑器很多, markdown-editor 是比较简单的一个. 是 Go 语言下的 MarkDown 解析器. 前端的博客文章编辑和提交这里不讨论了.
前端 CSS 框架更是有太多选择, 当前比较受欢迎的当属 BootStrap 和 PureCSS. Go-Pages 使用 JingYes. 这里不再列举可能用到的其他前端库.
TOML
配置文件采用 TOML 格式, 这里分析几个 table
.
defalut
作为多域名博客系统有些 css,js,image 资源文件是可以共享的, static 目录起到这个作用. 但是, 可以预计, 很可能会把 MarkDown 文章源文件预渲染成 html 文件, 它也是静态文件, 他们所属的 base 目录是不同的. static
package 不产生 404 的方式很好的解决了这个问题. Go-Pages 可以这样做(m 是 Martini 对象):
上述几个 package 给 Go-Pages 提供了最基础的动力. 流程也基本确定, coding…