Документация для шаблонов является частичной, я наблюдал за источником.
Функция _.template имеет 3 аргумента:
- Текст строки : строка шаблона
- Данные объекта : данные оценки
- Настройки объекта : локальные настройки, _.templateSettings является объектом глобальных настроек
Если данные (или ноль) не заданы, будет возвращена функция рендеринга . У него есть 1 аргумент:
- Данные объекта : такие же, как данные выше
В настройках есть 3 шаблона регулярных выражений и 1 статический параметр:
- RegExp оценивать : "<% code%>" в строке шаблона
- RegExp interpolate : "<% = code%>" в строке шаблона
- РегВыр побег : "<% - код%>"
- Строковая переменная : необязательно, имя параметра данных в строке шаблона
Код в разделе оценки будет просто оценен. Вы можете добавить строку из этого раздела с помощью команды __p + = "mystring" в оцененный шаблон, но это не рекомендуется (не является частью интерфейса шаблонов), используйте вместо этого раздел интерполяции. Этот тип раздела предназначен для добавления блоков, таких как if или for, в шаблон.
Результат кода в разделе интерполяции будет добавлен в оцененный шаблон. Если ноль возвращен, будет добавлена пустая строка.
Раздел escape экранирует html с помощью _.escape для возвращаемого значения данного кода. Таким образом, он похож на _.escape (код) в интерполированном разделе, но экранируется с \ пробельными символами, такими как \ n, прежде чем передать код в _.escape . Я не знаю, почему это так важно, это в коде, но он хорошо работает с интерполяцией и _.escape - который не экранирует символы пробела - тоже.
По умолчанию параметр data передается с помощью оператора with (data) {...} , но этот вид оценки намного медленнее, чем оценка с именованной переменной. Так называя данные с переменным параметром что - то хорошее ...
Например:
var html = _.template(
"<pre>The \"<% __p+=_.escape(o.text) %>\" is the same<br />" +
"as the \"<%= _.escape(o.text) %>\" and the same<br />" +
"as the \"<%- o.text %>\"</pre>",
{
text: "<b>some text</b> and \n it's a line break"
},
{
variable: "o"
}
);
$("body").html(html);
полученные результаты
The "<b>some text</b> and
it's a line break" is the same
as the "<b>some text</b> and
it's a line break" and the same
as the "<b>some text</b> and
it's a line break"
Вы можете найти здесь больше примеров того, как использовать шаблон и переопределить настройки по умолчанию:
http://underscorejs.org/#template
При загрузке шаблона у вас есть много вариантов, но в конце вы всегда должны преобразовать шаблон в строку. Вы можете дать его в качестве обычной строки , как в примере выше, или вы можете загрузить его из тега сценария, и использовать .html () функция JQuery, или вы можете загрузить его из отдельного файла с TPL плагин из require.js ,
Еще один вариант построения дерева dom с лаконичным вместо шаблонизации.