数据支持的静态站点生成器?

Data-backed static site generator?

我正在选择静态站点生成器,但尚未找到满足我的特定用例的。这是我正在寻找的简化版本:

除了少数几页,每一页都是这样的:

<html>
  <head>
    <title><!-- Title differs based on page --></title>
  </head>
  <body>
    <ul>
      <!-- List entries here differ based on the page -->
    </ul>
  </body>
</html>

据我所知,在静态站点生成器中执行此操作的“标准”方法是为整个 HTML 创建一个模板文件,然后创建一个页面文件(使用所述模板) 对于每个特定页面。我觉得这会不必要地弄乱开发目录,因为除了显示的数据之外每个页面都相同。

我想要的是完全由数据驱动。也就是说,我想根据上面的内容创建一个模板文件,然后创建一个类似以下内容的数据文件:

TemplateToUse = 'MyTemplateFile.html'

DataObjects =
[
  {
    OutputFilename = 'Page1.html',
    PageData = {
      Title = 'Page 1',
      ListEntries = [ ... ]
    }
  },
  {
    OutputFilename = 'Page2.html',
    PageData = {
      Title = 'Page 2',
      ListEntries = [ ... ]
    }
  },
]

静态站点生成器将使用它并输出每个页面,将数据传递给每个页面的模板。哪些静态站点生成器支持这种工作流程?

看起来 Jekyll 的 Generators 可以完成这项任务,但我更感兴趣的是 1) 静态类型和 2) 需要较少的自定义代码。

虽然我还没有找到同样强大的静态类型选项,但看起来 Jekyll 的 Collections 功能正是您正在寻找的。您为问题中提到的每个“DataObject”创建一个文件,Jekyll 运行它们并生成页面。