我们使用config.json来设置基于Handlebars的布局以从模板生成电子邮件。该json配置包含部分名称和该部分的内容(图像,标题和说明)。使用JSON定义Handlebars JS partials:在JSON中定义部分的名称,并使Handlebars JS呈现部分
的/分音/ ..分别称为:
- primary.html
- secondary.html
此处是/data/config.json一个例子 - 您可以看到“模块”节点包含部分及其内容:
{
"subject": "my email subject",
"pretext": "this is the pretext text",
"modules": {
"primary":{
"image": {
"src": "primary-hero.jpg",
"alt": "This is the primary image"
},
"headline": "Primary Headline",
"description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate nulla ipsam ratione rem incidunt quasi quos, possimus cumque neque corporis, dignissimos deserunt perspiciatis totam. Totam itaque distinctio deserunt fugiat nostrum."
},
"secondary":{
"image": {
"src": "secondary-hero.jpg",
"alt": "This is the secondary hero image"
},
"headline": "Secondary Headline",
"description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate nulla ipsam ratione rem incidunt quasi quos, possimus cumque neque corporis, dignissimos deserunt perspiciatis totam. Totam itaque distinctio deserunt fugiat nostrum."
},
}
}
我目前有一个句柄循环/pages/index.html工作,但使用比较帮手。显然,这种做法有问题,因为它迫使任意渲染顺序,还可以当部分在JSON反复失败:
{{#each config.modules}}
{{#ifEqual @key "primary"}}
{{> primary}}
{{/ifEqual}}
{{#ifEqual @key "secondary"}}
{{> secondary}}
{{/ifEqual}}
{{/each}}
更理想的是,循环应该是这样的:
{{#each config.modules}}
{{ > @key }}
{{/each}}
那当然失败:
Panini: rendering error ocurred.
{ [Error: The partial @key could not be found]
description: undefined,
fileName: undefined,
lineNumber: undefined,
message: 'The partial @key could not be found',
name: 'Error',
number: undefined }
有没有什么办法做到这一点 - 通过json传递部分名称?
不是一个坏想法。但是,这只会导致@键值是输出,而Handelbars不会实际呈现部分。它目前在我的模板中显示以下文本:主证书 –
@christian_pn请参见[this gist](https://gist.github.com/robertklep/5b69e35add4f5b5f121d344e2986769d)了解独立示例。也许我误解了你想达到的目标? ('handlebars @ 4.0.5') – robertklep