我正在尝试让我的metalsmith
设置正常工作,没什么特别的。
在我的build.js
我有:
…
handlebars.registerHelper('doctype', function() {
return new handlebars.SafeString('<!DOCTYPE html>');
});
…
在我的部分模板中,header.hbt
我有:
{{doctype}}
<html>
…
结果 html 以:
<p><!DOCTYPE html></p>
——这显然不是我需要的。
有什么建议么?
PS。在我的布局文件中使用普通的 doctype 定义具有相同的效果。使用handlebars ^4.0.5
.
编辑1:
尝试了一下之后,我可以提供另一个症状:如果将调用的结果放在块之前,它SafeString()
似乎被包装在标签中。这并非特定于 doctype 声明,»normal« html 元素似乎也受到影响。<p>
<html>
编辑 2:
现在我已经提炼了 2x2 案例以实现以下功能safeString()
:
a)块内的常规元素(例如<div>
)<html>
按预期呈现,没有更改。
b)块渲染之前的常规元素,但放置在标签内。<html>
<p>
c)块内的doctype元素<html>
被呈现为纯文本,如下所示:<!DOCTYPE html>
d)块之前的doctype元素<html>
将以相同的方式呈现,但包装在一个<p>
元素中。