我正在尝试自学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}
编译并调用document.write(examples.simple.hiWorld();
后,显示的字符串在“Hello”和“world”之间没有空格:Helloworld!
为什么不呢?
答案 0 :(得分:6)
Closure Templates处理line joining如下:
在模板的主体内,您可以根据需要缩进行,因为模板编译器会删除行的开头和结尾处的所有行终止符和空格,包括其余行注释之前的空格。编译器完全删除仅包含空格的空行。根据以下启发式连接连续行:如果连接位置在任一侧与模板或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}