为什么Closure模板中的"Hello"之后没有空格?

dan*_*007 4 google-closure-templates

我正在尝试自学Closure模板.我简单地制作了一个简单的文件.所以:

{namespace examples.simple}

/**
 * says hello to the world
 * @param? name Optional parameter specifying who you are greeting.
 */
{template .hiWorld}
  Hello
  {if $name}
   {$name}!
  {else}
   world!
  {/if}
{/template}
Run Code Online (Sandbox Code Playgroud)

document.write(examples.simple.hiWorld();然而,在编译和调用之后,显示的字符串在"Hello"和"world"之间没有空格:Helloworld!

为什么不?

Chr*_*ert 6

Closure模板处理行连接如下:

在模板的主体内,您可以根据需要缩进行,因为模板编译器会删除行的开头和结尾处的所有行终止符和空格,包括其余行注释之前的空格.编译器完全删除仅包含空格的空行.根据以下启发式连接连续行:如果连接位置在任一侧与模板或HTML标记相邻,则行连接时不显示空格.如果连接位置没有在任何一侧与模板或HTML标记相邻,则这些行只与一个空格连接.

要在Closure模板中添加需要一个空格的空间,请使用特殊字符命令{sp}.如果插入了不需要的空间,您可以使用该命令将其删除{nil}.有关行连接示例,请参阅features.soy.

simple.soy会成为:

{namespace examples.simple}

/**
 * says hello to the world
 * @param? name Optional parameter specifying who you are greeting.
 */
{template .hiWorld}
  Hello{sp}
  {if $name}
   {$name}!
  {else}
   world!
  {/if}
{/template}
Run Code Online (Sandbox Code Playgroud)