【问题标题】:Using Assemble, generate HTML files from multiple data files using one template file?使用 Assemble,使用一个模板文件从多个数据文件生成 HTML 文件?
【发布时间】:2014-05-23 22:10:54
【问题描述】:

我正在尝试使用 Assemble 使用一个模板从多个数据文件生成多个静态文件。

更详细地说,我有 12 个 JSON 文件代表烹饪食谱的数据,还有一个 Handlebars 文件 recipe.hbs,其布局文件为 default.hbs。

我想根据每个 JSON 文件输出一个 HTML 文件。

文件结构:

/templates
    /data
        recipe1.json
        recipe2.json, etc.
    /layouts
        default.hbs
    /pages
        recipe.hbs

输出:

/output
    recipe1.html (based on recipe1.json)
    recipe2.html (based on recipe2.json), etc.

听起来这应该可以使用集合,但我似乎无法理解如何设置 Grunt 文件。

谢谢。

【问题讨论】:

    标签: gruntjs assemble


    【解决方案1】:

    我创建了这个要点:https://gist.github.com/doowb/ca6f3321a05f6ac727e5Gruntfile.js 文件中包含代码,用于使用组合的配方模板和配方数据动态创建 pages 列表。

    These lines 是创建pages 数组的关键。可以将它们移到另一个文件中,并要求它们使 grunt 文件更干净。

    This linepages 数组添加到 assemble 的 pages 选项中,以便构建它们。

    如果您没有任何其他页面要构建,请使用this line 设置目标而不拉入任何其他页面。

    希望这会有所帮助。

    【讨论】:

    • 谢谢@doowb。我能够在工作中检查这一点,一切似乎都很好。
    • 使用这种方法,我可以将多个 JSON 文件读入data 变量吗?我正在尝试将一个 JSON 用于站点范围的数据,一个用于食谱。我尝试将两个 grunt.file.readJSON() 调用包装在一个对象中,但这不起作用。
    • 我通过这个答案想出了如何将多个文件加载到data 变量中。 stackoverflow.com/a/23030021/664898
    • 如果您在 assemble 选项中使用data: ['templates/data/*.json'],所有数据文件都将根据文件名加载并可用。例如{{recipe1.something}}
    • 回过头来看另一个项目的这个问题,是否可以让每个页面都设置自己的目标?如果您愿意,我可以在一个新问题中写这个。 @doowb
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2014-07-01
    • 2011-06-12
    • 2021-12-14
    • 2014-09-27
    • 2011-06-12
    • 2014-08-24
    相关资源
    最近更新 更多