- 将当前版本作为0.8.0版本发布,2013-08-01,初始版本作为0.7.0
- 相对于第一次的初始版本,0.8.0有以下改动:
- url支持丑陋格式(index)和好看的格式(index.html)
- 支持指定输出目录
- 自动将static目录同步到输出目录
- 启动参数支持长短格式,补充了部分启动参数的功能
- 配置和front matter添加了对yaml/toml格式的支持
- 支持前一页后一页(当前提交更新)
- 支持系列(可能是指索引:分类和标签)
- 添加了verbose输出
- bug修复
源码阅读:
- 添加前一页后一页功能
- 构建站点有3个步骤:处理/渲染/写到输出目录
- 在处理过程中,主要是初始化site对象,初始化page对象,初始化每个page的front matter
- 新增的前一页后一页功能,就是再page对象初始化之后,按发布日期排序之后
源码阅读:
- 索引,以前的分类和标签都会单独放在一个组数据结构:
- map(分类/标签,page数组), 现在改为 map(分类/标签,(具体的分类或标签名, page数量)数组)
- 再渲染中,如果发现了索引模板(indexes/indexes.html),会生成相应的html文件,目录对应索引名
- 索引属于site的部分,所以OrderedIndexList 有序的索引对象就放在SiteInfo里,而不是像之前的指针
- 将之前public下的static目录放到static下面
添加索引页的说明
- 用户可以自定义索引,索引可以用来干什么:
- 内容中的索引
- content的分类/分组/区分系列
- 索引必须要在config中定义,定义的格式是kv对,tag:"tags",或是 topic:"topics",key是单数,值是复数
- 单数键复数值在代码中有体现,单数和复数,会利用inflection包来做处理,
- 但是这个包目前支持少数语言,所以,复数的写法,还是得用户来搞定
- 在配置文件中定义了索引后,就可以添加索引模板
- 每一个索引,都需要一个索引模板,模板位置:/layout/indexes/单数.html
- 如果索引是标签(tag),渲染后,会丢在输出目录下的/tags/标签名
- 在添加索引模板后,下一步就是在content文件中指明分类/标签,在front matter中
- 在front matter的写法也是有规定的:元数据的表示也是kv表示,k是索引复数,v可以是任意
- eg: 配置中定义可以用tag表示标签(tag:"tags"), 那么在content中可以这么写(tags:["学习","c++","2019","bug系列"])
- 最后就是显示, 在页面引用时使用 .Params.tags
附加功能:索引的索引:一个单独的索引页,存放其他的索引信息
索引模板中支持的变量:
- .Title The title for the content.
- .Date The date the content is published on.
- .Permalink The Permanent link for this page.
- .RSSLink Link to the indexes' rss link.
- .Data.Pages The content that is assigned this index.
- .Data.singular The index itself.
文档更新:
- hugo是比其他大部分静态站点生成器都快的工具
- 速度很快,大约一个content 1ms左右
- hugo适合很多场景:博客/文档
- 增加了release-notes
- 模板中新增两个参数:Prev和Next
更新路线图:
- 分页
- 支持其他顶级page,现在只有homepage,后面还有about等
- 支持系列
- 语法高亮
- 页面的 前一页/后一页
- 相关post
- 支持toml的front matter
- 适当支持yaml的front matter
- 支持其他格式
- 更好的错误处理
- 命令
- 动作,eg: hugo create page
回顾:
- 新增前一页后一页
- 明确了索引的规则(配置/模板/使用/显示)
- 将static目录独立出来
- 启动参数的完善:支持长短格式/完善部分参数
- 添加索引的索引