Javascript 车把套<;!DOCTYPE html>;

Javascript 车把套<;!DOCTYPE html>;,javascript,html,handlebars.js,templating,metalsmith,Javascript,Html,Handlebars.js,Templating,Metalsmith,我正试图让我的metalsmith设置正常工作,没什么特别的 在我的build.js中,我有: … handlebars.registerHelper('doctype', function() { return new handlebars.SafeString('<!DOCTYPE html>'); }); … {{doctype}} <html> … 结果html以以下内容开头: !DOCTYPE html –这显然不是我需要的 有什么建议吗 在我的布局文件

我正试图让我的
metalsmith
设置正常工作,没什么特别的

在我的
build.js
中,我有:

…
handlebars.registerHelper('doctype', function() {
  return new handlebars.SafeString('<!DOCTYPE html>');
});
…
{{doctype}}
<html>
…
结果html以以下内容开头:

!DOCTYPE html

–这显然不是我需要的

有什么建议吗

在我的布局文件中使用普通的doctype定义也有同样的效果。使用
把手^4.0.5

编辑1: 在尝试了一点之后,我可以提供另一个症状:
SafeString()
调用的结果似乎被包装在
标记中,如果它被放置在
块之前。这并不特定于doctype声明,»normal«html元素似乎也会受到影响

编辑2: 现在,我为
safeString()
的功能提取了2x2个案例:

a)
块中的常规元素(例如
)按预期呈现,没有任何更改

b)
块呈现为ok之前的常规元素,但放置在
标记中

c)
块中的doctype元素被呈现为纯文本,如下所示:
!DOCTYPE html


d)
块之前的doctype元素将以相同的方式呈现,但被包装在
元素中。

似乎是与
金属匠相关的问题,而不是
把手所固有的。一个给定的(错误的!)插件调用顺序导致了这个问题:调用
use(layouts(…)
之前调用
use(markdown(…)
是原因。(所以可能是
标记
插件完成了包装。)很抱歉给您添麻烦。

猜猜SafeString是做什么的,对不起,没有看到您的第二条评论!好的,在这里解释一下这个问题:handlebar.SafeString将返回一个字符串,您可以在html中安全地使用它,方法是将其威胁为文本而不是html。建议的库看起来很有希望,谢谢!然而,将其集成到我的设置中似乎并不琐碎。此外,我想了解我的代码有什么问题,因为我从一个文档站点复制/粘贴了它。是哪个插件导致的?很高兴知道其他有问题的人。@ismay:很抱歉耽搁了,刚刚编辑了答案。