对于任何Jekyll站点,build session 都由以下顺序的离散阶段组成—设置插件、读取 source 文件、运行生成器、渲染模板,最后将文件写入磁盘。
虽然上面的阶段是不言自明的,但有必要进行解剖的一个阶段是渲染阶段。
渲染阶段可以进一步划分为三个可选阶段。渲染的每个文件都经过一个或多个阶段,这取决于文件的内容字符串、front matter 和扩展名。这些阶段类似于装配线,一个阶段的输出是下一阶段的输入:
- 解释文件中的 Liquid 表达式
此阶段评估当前文件中的 Liquid 表达式。默认情况下,解释是肤浅的,因为结果输出中的任何 Liquid 表达式都不会被进一步解释。此外,文件 front matter 内容中的任何 Liquid 表达式都保持不变。 - 释放转换器
这个阶段调用映射到当前文件扩展名的转换器,并转换输入字符串。这是当 Markdown 被转换成 HTML ,Sass/Scss 被转换成CSS 或 CoffeeScript 被转换成 JavaScript 等等 时。由于这个阶段是由文件的扩展名决定的,.html
文件中的 Markdown 或 Sass 将保持不变。 - 填充布局
在这个阶段,source 文件被视为已渲染,并且不会被重新访问。然而,基于文件的扩展名,并因此基于 front matter 的内容,确定是否从前一阶段获取输出字符串并将其放入布局中。尽管 Sass 文件或 CoffeeScript 文件的输出从未被放置到布局中,但常规文本输出可以根据布局是否已通过 front matter 分配来进行。
布局的放置方式(Placement into layouts)类似于俄罗斯玩偶如何将较小的玩偶包裹在自己体内,或者牡蛎如何生成珍珠——前一阶段转换好的输出形成 core ,布局依次单独渲染在 core 上。