把手包裹 <!DOCTYPE html>
Handlebars wraps <!DOCTYPE html>
我正在尝试让我的 metalsmith
设置正常工作,没什么特别的。
在我的 build.js
我有:
…
handlebars.registerHelper('doctype', function() {
return new handlebars.SafeString('<!DOCTYPE html>');
});
…
在我的部分模板中 header.hbt
我有:
{{doctype}}
<html>
…
结果 html 开头为:
<p><!DOCTYPE html></p>
– 这显然不是我需要的。
有什么建议吗?
PS。在我的布局文件中使用普通文档类型定义具有相同的效果。使用 handlebars ^4.0.5
.
编辑 1:
经过一番尝试,我可以提供另一个症状:如果 SafeString()
调用的结果放在 <html>
块之前,它似乎被包裹在 <p>
标记中。这不是文档类型声明所特有的,»normal« html 元素似乎也受到影响。
编辑 2:
现在我已经为 safeString()
:
的功能提炼了 2x2 个案例
a) <html>
块内的 常规 元素(例如 <div>
)按预期呈现,没有变化。
b) <html>
块之前的 常规 元素呈现正常,但放置在 <p>
标签内。
c) <html>
块中的 doctype 元素呈现为纯文本,如下所示:<!DOCTYPE html>
d) <html>
块之前的 doctype 元素将以相同的方式呈现,但包装在 <p>
元素中。
似乎是 metalsmith
相关的问题,而不是 handlebars
所固有的。给定的 (错误!) 插件调用顺序会导致问题:在调用 use(markdown(…))
之前调用 use(layouts(…))
是原因。 (所以可能是 markdown
插件进行了包装。)很抱歉给您带来麻烦。
我正在尝试让我的 metalsmith
设置正常工作,没什么特别的。
在我的 build.js
我有:
…
handlebars.registerHelper('doctype', function() {
return new handlebars.SafeString('<!DOCTYPE html>');
});
…
在我的部分模板中 header.hbt
我有:
{{doctype}}
<html>
…
结果 html 开头为:
<p><!DOCTYPE html></p>
– 这显然不是我需要的。
有什么建议吗?
PS。在我的布局文件中使用普通文档类型定义具有相同的效果。使用 handlebars ^4.0.5
.
编辑 1:
经过一番尝试,我可以提供另一个症状:如果 SafeString()
调用的结果放在 <html>
块之前,它似乎被包裹在 <p>
标记中。这不是文档类型声明所特有的,»normal« html 元素似乎也受到影响。
编辑 2:
现在我已经为 safeString()
:
a) <html>
块内的 常规 元素(例如 <div>
)按预期呈现,没有变化。
b) <html>
块之前的 常规 元素呈现正常,但放置在 <p>
标签内。
c) <html>
块中的 doctype 元素呈现为纯文本,如下所示:<!DOCTYPE html>
d) <html>
块之前的 doctype 元素将以相同的方式呈现,但包装在 <p>
元素中。
似乎是 metalsmith
相关的问题,而不是 handlebars
所固有的。给定的 (错误!) 插件调用顺序会导致问题:在调用 use(markdown(…))
之前调用 use(layouts(…))
是原因。 (所以可能是 markdown
插件进行了包装。)很抱歉给您带来麻烦。