繁体   English   中英

如何使用Assemble从JSON文件生成多个页面

[英]How can I generate multiple pages from a JSON file with Assemble

所以我正在为可复制的文章构建一个框架。

每篇文章都将由“部分”组合而成,这些部分基本上构成了一个html块和一些相关内容。 例如,给定的文章可以如下组成:

author section
text section
image section
text section
blockquote section
carousel section
text section

我想象每个部分都有一个部分模板,如上所述,这些部分会有关联的数据,所以对于文本部分,它可能只是副本(虽然它可能是一个降价文件?),对于图像部分,它可能是网址和alt标签等的集合。 每篇文章还需要一个相关的CSS和JS文件,用于任何定制的修改,以及它自己的图像仓库。

构建后我需要最终得到的最终结构如下所示:

site/
    [shared]css/
    [shared]img/
    [shared]js/
    articles/
        article-01/
            [article specific]css/
            [article specific]img/
            [article specific]js/
            index.html
        article-02/
            [article specific]css/
            [article specific]img/
            [article specific]js/
            index.html

显然,复制和粘贴HTML / CSS文件,更改一些值并使用grunt构建所有这些都相当简单,但我试图避免复制粘贴复制,似乎汇编可能是答案。

因此,我的广泛计划是使用汇编来撰写文章,目的是只需填充.json文件或类似文件即可生成新文章。

在我看来,它看起来像这样:

{ 
  "title"   : "Article Title",
  "sections": [
    { 
      "type"  :  "text",
      "data"  : {
        "content"  :  "Lorem iplsum dolor..."
      }
    },
    { 
      "type"  :  "author",
      "data"  : {
        "name"  :  "Bob Servant",
        "meta"  :  "As if you don't know who Bob Servant is",
        "url"  :  "bobservant.com"
      }
    },
    { 
      "type"  :  "image",
      "data"  : {
        "src"   :  "http://placehold.it/300x300",
        "alt" :  "Bob Servant"
      }
    }
  ]
}

这个.json文件将决定各个部分的顺序,并提供内容,希望否定每篇文章需要一个单独的.hbs模板。

在我的默认模板中,我基本上希望实现以下伪代码:

foreach section {
  get the the appropriate template and pass it the associated data object
}

我正在努力解决的另一个问题是我希望有一些泛型的部分内容,例如text.hbs,image.hbs author.hbs等,但我需要能够在给定的文章中包含多个实例,每个实例都包含他们自己的数据。

我想最终这是一个抽象问题,无论是在分离模板和数据的合适程度方面,还是如何将数据绑定到模板的正确实例......如果这是有道理的。

如果有人有任何有用的建议,将非常感谢。 感觉就像我想要做的那样应该是可以实现的,但我不能完全理解如何通过研究例子来解决这个问题:

您可以在assemble.options上向pages集合添加页面。 有关示例,请参阅Gruntfile的这一部分

您可以创建上面提到的每个部分,其中包含textauthorsimageblockquote等所需的数据...然后使用部分帮助器从页面元数据中动态调用部分...

{{#each page.sections}}
  {{partial this.type this.data}}
{{/each}}

尝试用这些信息组合一个回购并将其链接到这里,我可以看看它是否按预期工作。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM