我們使用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