节点把手在渲染视图之前添加额外的文本节点

Posted

技术标签:

【中文标题】节点把手在渲染视图之前添加额外的文本节点【英文标题】:Node handlebars adds extra text node before rendered view 【发布时间】:2015-02-16 12:37:00 【问题描述】:

我有以下问题: 在带有把手的布局中渲染视图时,引擎会在渲染的视图主体之前添加一个额外的文本节点

<nav></nav>
body
<footer></footer>

结果

<nav></nav>
"
[empty text node here]
                      "
<rendered view>
<footer></footer>

那个空文本节点有它自己的高度,并且会破坏我的 CSS 边距和填充。请注意,如果我将视图 html 直接放在布局中而不使用把手模板,则没有文本节点,一切都很好。

任何想法为什么会发生这种情况以及如何解决它?

【问题讨论】:

如果你尝试 ~ body ?这应该删除波浪号一侧的空格 这是一个有效的语法吗? 它在车把文档中。 http://handlebarsjs.com/expressions.htmlWhitespace Control Template whitespace may be omitted from either side of any mustache statement by adding a ~ character by the braces. 谢谢,但在解析 HTML 而不是纯文本 Express started on http://localhost:1337. Press CTRL+C to terminate... Error: Parse error on line 96: ... &lt;/nav&gt; ~body &lt;foote ---------------------^ Expecting 'ID', 'DATA', got 'INVALID' 时,它看起来不是 express-handlebars 中的有效语法 在波浪号和“body”之间可能有一个空格。另见:github.com/emberjs/ember.js/issues/4305。它应该工作。您使用的是最新款车把吗? 【参考方案1】:

@leoyoo 答案是正确的。 我正要发布同样的问题并发现了这个。

在 Chrome 上,来源显示如下所示的空白字符(红点):

...并字符串化为&amp;#65279;

我在 Visual Studio 上,这是保存文件时的默认设置:

当我将其更改为没有签名的 UTF-8(如下所示)时,空白字符消失。

在 Visual Studio 上,您执行以下操作:File&gt;&gt;Save fileName.ext As,然后在“保存”按钮旁边的下拉菜单。

【讨论】:

【参考方案2】:

我想我找到了原因,请检查您的部分视图文件,文件中是否插入了 BOM,有些编辑器会在 UTF-8、UTF-16 和 UTF-32 格式的文件中插入这个。因此,如果您使用的是 UTF-8,只需删除 BOM 即可。

【讨论】:

以上是关于节点把手在渲染视图之前添加额外的文本节点的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 中自定义网格视图的额外不必要渲染问题

C# webservice添加额外的节点

为啥在 Playstore 上发布我的应用程序后,firebase 会添加一个额外的日历节点?

如何触发JQuery treeview的渲染

如何删除额外的节点

当视图是多行时,约束布局如何摆脱 textview 上的额外空间