所以我正在为可复制的文章构建一个框架。
每篇文章将由“部分”的组合组成,这些“部分”基本上构成了一个 html 块和一些相关内容。例如,给定的文章可以按如下方式组成:
author section
text section
image section
text section
blockquote section
carousel section
text section
我想象每个部分都有一个部分模板,并且如上所述,这些部分将具有关联的数据,因此对于文本部分它可能只是副本(尽管它可能是降价文件?),对于图像部分它可能是 url 和 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 构建它会相当简单,但我试图避免复制粘贴重复,似乎 assemble 可能是答案。
所以我的总体计划是使用 assemble 来撰写文章,目标是能够通过填充 .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 等,但我需要能够在给定文章中包含多个实例,每个实例都有他们自己的数据。
我想最终这是一个抽象问题,无论是在多大程度上将模板和数据解耦,还是如何将数据绑定到模板的正确实例......如果这有意义的话。
如果有人有任何有用的建议,将不胜感激。感觉我正在尝试做的事情应该是可以实现的,但我不能仅仅通过研究示例来了解如何去做:|