Документация для шаблонов является частичной, я наблюдал за источником.
Функция _. Template имеет 3 аргумента:
- String text: строка шаблона
- Объект Данные : данные оценки
- Объект Настройки : локальные настройки, _. TemplateSettings - это объект глобальных настроек
Если data (или null) не задано, будет возвращена функция render .Он имеет 1 аргумент:
- Объект Данные : аналогично Данные выше
Существует 3 шаблона регулярных выражений и 1статический параметр в настройках:
- RegExp оценка : "<% code%>" в строке шаблона
- RegExp интерполировать : "<% = code%> "в строке шаблона
- RegExp escape :" <% - code%> "
- String переменная : необязательно,имя параметра data в шаблонной строке
Код в секции оценивать будет просто оценен.Вы можете добавить строку из этого раздела с помощью команды __ p + = "mystring" к оцененному шаблону, но это не рекомендуется (не является частью интерфейса шаблонов), вместо этого используйте раздел интерполяции.Этот тип раздела предназначен для добавления блоков, таких как if или for, в шаблон.
Результат кода в разделе interpolate будет добавлен в оцененный шаблон.Если возвращено нулевое значение, будет добавлена пустая строка.
Раздел escape экранирует html с _. Escape в возвращаемом значении данного кода.Таким образом, он похож на _. Escape (код) в интерполированном разделе, но экранируется с \ пробельными символами, такими как \ n перед передачей кода на _. escape .Я не знаю, почему это так важно, это в коде, но он хорошо работает с интерполировать и _. Escape - который не экранирует символы пробела -тоже.
По умолчанию параметр data передается оператором with (data) {...} , но этот вид оценки выполняется намного медленнее, чемоценивая с именованной переменной.Таким образом, присвоение имени data с помощью переменной является чем-то хорошим ...
Например:
<code>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 %>\"
", {text:"
некоторый текст и \ n это разрыв строки "}, {variable:" o "}); $ (" body "). html (html);
results
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
При загрузке шаблона у вас есть много вариантов, но в конце вы всегда должны конвертировать шаблонв строку. Вы можете задать ее как обычную строку, как в примере выше, или загрузить ее из тега сценария и использовать функцию jquery .html () , или загрузить ее из отдельногофайл с плагином tpl из require.js .
Другой вариант построения дерева dom с laconic вместо шаблонов.