不必要的
最近在使用模板生成文件(特别是自述文件和许可证)的开发工具中出现了一个问题。一切都无缝运行,除了 字符不受影响。
为了说明该问题,请考虑以下代码片段:
<code class="pawn">#include <{{.Repo}}></code>
此处,应按预期插入 Repo 参数,结果为:
#include <sometext>
然而,实际结果是:
#include &lt;sometext>
文档分析没有对此行为提供明确的解释。对于 > 来说这似乎不合逻辑。字符保持不受影响,而
解决方案在于理解 html/template 的用途。它专为生成 HTML 输出而设计,提供自动上下文相关转义以防止代码注入。文档明确指出:
html/template 仅用于生成 HTML 输出。它提供与包 text/template 相同的接口,并且只要输出是 HTML,就应该使用它来代替 text/template。
当输出不是 HTML 时,就像这里的自述文件一样,它是使用文本/模板更合适。该模板引擎不会转义数据,解决了不必要的字符转换问题。通过切换到 text/template,实现了预期的输出:
#include <sometext>
html/template 和 text/template 之间的区别确保仅在必要时应用上下文相关的转义,从而防止非预期的字符转换。 -HTML输出场景。
以上是为什么我的是``?的详细内容。更多信息请关注PHP中文网其他相关文章!