-
Notifications
You must be signed in to change notification settings - Fork 0
Tags
###Tags summary
Name | Description | Empty |
---|---|---|
comment | Комментарий. | нет |
echo | Выводит текстовые данные в результат рендеринга. | да |
root | Корневой элемент в XML-файлах. | нет |
context | Устанавливает контекст для дочерних элементов. | нет |
data | Сохраняет данные в глобальный объект _data. | нет |
if | Выполняет содержимое, если выражение test возвращает true. | нет |
unless | Выполняет содержимое, если выражение test возвращает false. | нет |
else | Если результатом выражения предка является истина (для unless) или ложь (для if), следующие за этим тегом узлы будут выполнены. | да |
each | Перебирает ключи массива или собственные свойства переданного объекта. | нет |
template | Создает inline-шаблон. | нет |
include | Вызывает шаблон. | да |
###Tags details ###<tsn:comment /> Комментарий. Содержимое тега будет удалено из результирующего кода шаблона.
Атрибуты: нет.
###<tsn:echo /> Выводит текстовые данные в результат рендеринга.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
data | this | JavaScript выражение | нет | Выражение, результат которого будет вставлен на место тега. |
format | text |
text: значение выражения в атрибуте data будет преобразовано в строку.
json: значение выражения в атрибуте data будет преобразовано в строку функцией JSON.stringify. |
нет | Формат данных. |
escape |
js: подготавливает данные, предназначенные для вставки в JavaScript-строку. html: заменяет символы &<>" на HTML-сущности. htmlDec: заменяет символы &<>" на десятиричные HTML-коды. htmlHex: заменяет символы &<>" на шестнадцатеричные HTML-коды. url: кодирует URL-строку функцией encodeURI. |
нет | Метод экранирования, которое будет применено к результату выражения text после преобразования type, если последнее было указано. |
Так же для вывода данных (включая атрибуты) можно использовать TSN-сущность:
&namespace.property;
Здесь:
namespase
: текущий префикс пространства имен тегов TSN
property
: JavaScript-выражение, представляющее собой доступ к значению свойства объекта с использованием точечной нотации. Допускаются символы A-Za-z0-9._-
.
TSN-сущности не могут использоваться в значениях атрибутов тегов TSN.
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:root xmlns:tsn="TSN">
<div>
&TSN.this.string;
</div>
<div>
<tsn:echo data="this.string" escape="htmlDec" />
</div>
<div>
<tsn:echo format="json" />
</div>
<script>
var data = "<tsn:echo data="this.string" escape="js"/>";
</script>
</tsn:root>
Вызов:
template.call({
string: '"Stiff Opposition Expected to \nCasketless Funeral Plan"',
array: [1, 2, 3]
});
Результат:
<div>"Stiff Opposition Expected to
Casketless Funeral Plan"
</div>
<div>"Stiff Opposition Expected to
Casketless Funeral Plan"
</div>
<div>{"string":"\\"Stiff Opposition Expected to \nCasketless Funeral Plan\\"","array":[1,2,3]}
</div>
<script>
var data = "\\"Stiff Opposition Expected to \
Casketless Funeral Plan\\"";
</script>
###<tsn:root /> Корневой элемент в XML-файлах.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
xmlns:tsn | TSN | нет | Объявляет пространство имен TSN для поддержки автодополнения в IDE. | |
context | this | JavaScript выражение. | нет | Устанавливает контекст для дочерних элементов. |
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tsn:root PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<tsn:root xmlns:tsn="TSN" context="this.contextRoot">
<div>
<span><tsn:echo data="this.first" /></span>
</div>
<div>
<span><tsn:echo data="this.second" /></span>
</div>
</tsn:root>
Вызов:
template.call({
contextRoot: {
first: 'First data',
second: 'Second data'
}
});
Результат:
<div>
<span>First data</span>
</div>
<div>
<span>Second data</span>
</div>
###<tsn:context /> Устанавливает контекст для дочерних элементов.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
object | this | JavaScript выражение. | нет | Результат выражения будет контекстом для дочерних элементов. |
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:context object="this.context">
<div><tsn:echo data="this" /></div>
</tsn:context>
Вызов:
template.call({
context: 'Context data'
});
Результат:
<div>Context data</div>
###<tsn:data />
Сохраняет данные в глобальный объект _data
.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
name | да | Имя данных. | ||
value | JavaScript выражение. | нет | Данные. Если атрибут не указан, будет сохранено вычисленное содержимое тега. | |
context | true | JavaScript выражение. | нет | Устанавливает контекст для дочерних элементов, если не был указан атрибут value. |
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:root>
<tsn:data name="firstData" value="this.firstData" />
<tsn:data name="secondData">
<div>
<tsn:echo data="this.secondData" />
</div>
</tsn:data>
<div>
<tsn:echo data="_data.firstData" />
</div>
&TSN._data.secondData;
</tsn:root>
Вызов:
template.call({
firstData: 'First data',
secondData: 'Second data'
});
Результат:
<div>First data
</div>
<div>Second data
</div>
###<tsn:if /> Выполняет содержимое, если выражение test возвращает true.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
test | this | JavaScript выражение. | нет | Выражение, результат которого влияет на обработку содержимого тега. |
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:if>
Context is defined.
</tsn:if>
Вызов:
template.call(1);
Результат:
Context is defined.
###<tsn:unless /> Выполняет содержимое, если выражение test возвращает false.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
test | this | JavaScript выражение. | нет | Выражение, результат которого влияет на обработку содержимого тега. |
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:unless>
Context is not defined.
</tsn:unless>
Вызов:
template.call();
Результат:
Context is not defined.
###<tsn:else />
Если результатом выражения предка является истина (для unless) или ложь (для if), следующие за этим тегом узлы будут выполнены.
Предком тега else должен быть тег if или unless. На одном уровне вложенности могут находиться несколько тегов else, если у них есть атрибут if или unless. Тег else без атрибутов должен быть всегда последним в списке детей if или unless. Атрибуты if и unless не должны вместе присутствовать в атрибуте.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
if | JavaScript выражение. | нет | Следующие соседние узлы выполнятся, если результат этого выражения вернёт true. | |
unless | JavaScript выражение. | нет | Логика, противоположная атрибуту if. |
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:if>
Context is defined.
<tsn:else if="typeof this === 'string'" />
Data is string.
<tsn:else />
Context is not defined.
</tsn:if>
Вызов:
template.call('');
Результат:
Data is string.
###<tsn:each />
Перебирает вычисленный объект. Обязательно должен присутствовать один из атрибутов array
или object
.
В теле тега и его потомков доступны некоторые дополнительные JavaScript-переменные, в зависимости от типа перебираемого объекта:
При переборе массива:
-
_array
: результат выражения атрибутаarray
. -
_length
: длина массива. -
_index
: индекс текущего элемента массива.
При переборе объекта: * `_object`: результат выражения атрибута `object`. * `_property`: имя текущего свойства.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
array | JavaScript выражение. | нет | Итерация будет осуществляться по ключам вычисленного массива. | |
object | JavaScript выражение. | нет | Итерация будет осуществляться по свойствам вычисленного объекта. | |
item | Корректное имя переменной JavaScript. | нет | Если этот атрибут присутствует, в теле тега и его потомков будет доступна переменная с именем, указанным в значении атрибута и значением, соответствующим значению текущего свойства. | |
context | this | JavaScript выражение. | нет | Устанавливает контекст для дочерних элементов. |
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:each object="this" item="name">
<tsn:echo data="name" />
</tsn:each>
Вызов:
template.call({
a: '1',
b: '2',
c: '3'
});
Результат:
123
###<tsn:template /> Создает inline-шаблон.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
name | да | Имя шаблона. |
Пример: в описании тега <tsn:include />.
###<tsn:include /> Вызывает шаблон.
Атрибуты:
Name | Default value | Type value | Required | Description |
---|---|---|---|---|
name | нет | Имя inline-шаблона, который должен быть объявлен ранее. В этом случае происходит вызов шаблона из того места, где он был определён. | ||
src | Путь. | нет | Путь к файлу шаблона. Абсолютный путь начинается с TSN.config.templateRoot. Относительный путь начинается с папки текущего шаблона или от TSN.config.templateRoot, если текущий шаблон компилируется методом TSN.compile. Подключаемый шаблон наследует inline-шаблоны из текущего шаблона. | |
context | this | JavaScript выражение. | нет | Устанавливает контекст для шаблона. |
Обязательно должен присутствовать тег name или src.
Пример:
Код шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:root xmlns:tsn="TSN">
<tsn:template name="tmpl">
<tsn:echo />
</tsn:template>
<div>
<tsn:include src="template.xml" />
</div>
<div>
<tsn:include name="tmpl" />
</div>
</tsn:root>
Код файла template.xml:
<?xml version="1.0" encoding="UTF-8"?>
<tsn:root xmlns:tsn="TSN">
<tsn:include name="tmpl" />
<tsn:template name="tmpl">
Included data.
</tsn:template>
<tsn:include name="tmpl" />
</tsn:root>
Вызов:
template.call('Parent data.');
Результат:
<div>Parent data.
Included data.
</div>
<div>Parent data.
</div>