提问背景 Question:
还是下面这样写比较标准,不看以前还不知道go模板还有这样的功能。
<div id="content-body" class="msg-content-body">
{{- .Article.Question -}}
</div>
Go 模板 whitespace trimming 最佳实践
你说得非常对!使用 {{- .Article.Question -}} 这种写法是 Go 模板处理空白字符(whitespace trimming)的最佳实践,特别是在 pre-wrap 或其他对空白敏感的环境中。很高兴你发现了这个强大的功能!
Go 模板中的空白字符控制 (- 符号)
Go 模板引擎默认会保留模板中的所有空白字符,包括换行符、空格和制表符。这通常是为了保持模板的可读性,但在某些情况下,比如你的 div 元素内,这会导致意料之外的空格。
通过在 {{ 或 }} 后面添加一个连字符 -,你可以告诉 Go 模板引擎修剪掉紧邻该标记的空白字符:
{{- pipeline }}:移除该标记 之前 的所有空白字符。{{ pipeline -}}:移除该标记 之后 的所有空白字符。{{- pipeline -}}:同时移除该标记 之前和之后 的所有空白字符。
在你的例子中,{{- .Article.Question -}} 会确保:
{{-:移除div标签与{{.Article.Question}}之间可能存在的任何前导空白(例如换行和缩进)。-}}:移除{{.Article.Question}}文本与div结束标签之间可能存在的任何尾随空白(例如换行和缩进)。
这样,无论你的 vscode 编辑器如何自动格式化代码(添加缩进和换行),最终渲染到浏览器时,{{.Article.Question}} 的内容都不会有不必要的额外空格,因为它会紧贴 div 内部。这是一个非常实用的技巧,能够有效控制 HTML 输出的精确性。