javascript – Handlebars包装<!DOCTYPE html>

我想让我的金属装置工作,没什么特别的.

在我的build.js中我有:

…
handlebars.registerHelper('doctype', function() {
  return new handlebars.SafeString('<!DOCTYPE html>');
});
…

在我的部分模板header.hbt我有:

{{doctype}}
<html>
…

结果html开头是:

< p>& lt;!DOCTYPE html& gt;< / p>

– 这显然不是我需要的.

有什么建议?

PS.在我的布局文件中使用普通的doctype定义具有相同的效果.使用把手^ 4.0.5.

编辑1:
尝试了一下后,我可以提供另一个症状:SafeString()调用的结果似乎包含在< p>中.标记如果它放在< html>之前块.这不是特定于doctype的声明,“普通的”html元素似乎也会受到影响.

编辑2:
现在我已经为safeString()的功能提炼了2×2个案例:

a)< html>内的常规元素(例如< div>).正如预期的那样,块无需更改即可呈现.

b)< html>之前的传统元素.块被渲染好,但放在< p>内.标签.

c)< html>内的doctype元素块被渲染为纯文本,如下所示:& lt;!DOCTYPE html& gt;

d)< html>之前的doctype元素块将以相同的方式呈现,但包含在< p>中.元件.

最佳答案 似乎是与金属匠有关的物质,不是车把固有的.插件调用的给定(错误!)顺序导致问题:在调用use(markdown(…))之前调用use(layouts(…))是原因. (所以可能是降价插件进行包装.)抱歉,麻烦.

点赞