#Шаблонизатор. Спецификация.
###Базовый синтаксис
-
Типичный вид шаблона
<div class=”class1 class2 {{someClass}}”> <span class=”{{someClass}}”> {{ content|trim }} </span> </div>
-
В шаблоне существуют только свойства переданного объекта при генерации шаблона.
-
Выражения. Для вывода значений свойств переданного объекта или результата выражения используются двойные скобки:
{{ … }}
-
Переменные. Конструкция {{ name }} в шаблоне означает, что будет производится поиск ключа "name" в текущем контексте шаблона. Если в текущем контексте ключ найден не будет, поиск будет производится в родительском контексте (если он есть). Если по достижении конечного уровня контекстов ключ name найден не был, значение не будет выведено. Все переменные и значения выражений будут экранированы по умолчанию. Для отмены действий следует вызывать декоратор unescape {{name|unescape}}
-
Атрибуты. В случае если результатом выражения является одно из этих значений: 'undefined', 'null' атрибут тега выведен не будет.
Шаблон:
someClass = undefined; content = 'Hi!'
<div class="{{someClass}}"> {{content}} </div>
Результат:
<div> Hi! </div>
-
Выражения могут быть в любой части шаблона. В описательной части тега, кроме содержимого атрибутов, использование выражений не предусмотрено.
Верно
<div class="{{someClass}}"> {{content}} </div>
Неверно
<div {{someClass}}> {{content}} </div>
###Выражения
В шаблонизаторе можно выполнять определённый набор выражений: создание объектов, массивов, сложение, вычитание, деление, умножение и т.д.
-
Числа. Результатом выполнения выражения является число.
{{ 24 }} <!-- Результат: 24 -->
Сложение:
{{ 24 + 16 }} <!-- Результат: 40 -->
Вычитание:
{{ 24 - 16 }} <!-- Результат: 8 -->
Деление:
{{ 24 % 6 }} <!-- Результат: 4 -->
Умножение:
{{ 24 * 2 }} <!-- Результат: 48 -->
-
Строки. Результатом выполнения выражения является строка.
Вывод Строк
{{ 'string' }} <!-- Результат: string -->
{{ "string" }} <!-- string -->
Конкатенация:
{{ 'string' + ' ' + string }} <!-- Результат: string string -->
-
Переменные. В шаблонизаторе можно выводить любые переменные находящиеся в контексте текущего или родительского шаблона.
string = 'some string';
{{string}} <!-- Результат: some string -->