Почему в моем шаблоне закрытия нет пробела после слова "Hello"?
Я пытаюсь научить себя шаблонам закрытия. Я сделал простой файл просто.soy:
{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!
Почему бы и нет?
1 ответ
Шаблоны закрытия обрабатывают соединение линий следующим образом:
Внутри тела шаблона вы можете делать отступы строк столько раз, сколько хотите, потому что компилятор шаблонов удаляет все разделители строк и пробелы в начале и конце строк, включая пробелы, предшествующие комментарию в конце строки. Компилятор полностью удаляет пустые строки, состоящие только из пробелов. Последовательные строки объединяются в соответствии со следующей эвристикой: если место объединения ограничивает шаблон или тег HTML с обеих сторон, строки объединяются без пробелов. Если место объединения не ограничивает шаблон или тег HTML с обеих сторон, строки соединяются ровно одним пробелом.
Чтобы добавить пробел в шаблонах закрытия, где он необходим, используйте команду специального символа {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}