强迫翡翠不解释纯文本

时间:2016-01-05 09:10:19

标签: pug

我试图让Jade不解释我的模板的一部分,根据文档应该可以使用管道或点(参见http://jade-lang.com/reference/plain-text/)。

我所看到的是,Jade确实解释了管道html,而不仅仅是传递它。例如,这个模板:

div.controls
  | <select id="someid" anotherProp>
  | </select>

将生成以下HTML:

<div class="controls">
  <select id="someid" anotherprop=""></select>
</div>

而不是:

<div class="controls">
  <select id="someid" anotherProp></select>
</div>

请注意,“anotherprop”较低,并添加了a =“”。在搜索之后,我甚至不确定Jade是否能够使用真正的纯文本......

上下文 这个例子很简单,我试图在生成的HTML中包含Mustache模板,以便在单页面应用程序中使用。例如,上面的“anotherProp”在我的实际代码“{{#disable}} disabled {{/ disable}}”中,但它被Jade转化为垃圾。我发现了一种不使用“&lt;”的解决方法和“&gt;”在Jade模板的“纯文本”部分中使用占位符(我使用相应的HTML实体),然后在呈现Mustache模板之前用Javascript替换这些实体。这对我来说太难看了。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,问题实际上不是Jade,而是使用我用来查看内容的工具。 Chrome开发工具(Elements面板)和jQuery的html()函数都不输出确切的HTML,但可以修改它,因为它们依赖于innerHTML(参见http://api.jquery.com/html/)。更糟糕的是,确切的innerHTML行为取决于浏览器。翡翠正常地正常工作。

从生成的HTML中提取Mustache(或任何其他语言)模板的最简洁方法,并确保浏览器不修改它是将整个代码封装在HTML注释<!--和{{1}中},然后在检索模板后删除注释。这样你就可以获得两全其美:富有表现力的Jade预处理和文档内的Mustache模板。