将HTML作为JSON数据传递给Assemble

4

我正在开发一个需要多语言支持的项目。考虑到Assemble(更具体地说是grunt-assemble)已经是项目工具箱的一部分,所以我决定使用它,我的当前设置使用JSON文件作为handlebar模板的数据/文本输入。

该网站是响应式的,并且有一个要求使用换行符 <br /> 或不间断空格 &nbsp; 来控制文本的某个级别,以避免出现孤立的单词。有些句子需要在字符串中包含上述标记或HTML实体,否则我将被迫逐字逐句地拆分句子,并结合硬编码的HTML和JSON数据引用。想象一下这种情况:

<p>{{word_1}}<br />{{word_2}}</p>

这种方法并不友好于翻译,因为其他语言可能完全不需要换行。
为了避免这种情况,我尝试通过JSON传递HTML,例如:
{ "sentence" : "word<br />word" }

然而,组装输出是字面的,所以我得到它的字符串版本而不是功能标记,页面上字面显示word<br />word。对于&nbsp;也是如此。

如果需要通过 Assemble 将 HTML 标签或实体从 JSON 传递到 Handlebars 模板,请使用正确的表示法(如果有)是什么?


我认为正确的答案是不要这样做。只需将数据以JSON格式传递,并使用JavaScript在客户端生成您的HTML。 - bhspencer
1个回答

4

Handlebars默认情况下会转义HTML,但是您可以使用三个大括号格式{{{ }}}来避免转义。请看以下.hbs页面:

---
title: Test
htmlData: This is some <br/> html in data
---
<p>double-stash: {{htmlData}}</p>
<p>triple-stash: {{{htmlData}}}</p>

导致的结果是:

double-stash: This is some <br/> html in data

triple-stash: This is some
html in data

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接