Подчеркивание шаблонов - смена маркеров токенов - PullRequest
8 голосов
/ 21 марта 2012

В шаблоне подчеркивания используются маркеры <%= %> для необработанного и <%- %> для экранированного содержимого HTML.

Я знаю, что вы можете изменить маркеры, используя что-то вроде:

_.templateSettings.interpolate = /\{\{(.+?)\}\}/g;

Но как это относится к необработанному и экранированному контенту? Мне кажется, что в итоге у вас только один тип маркера. Или я что-то упустил?

1 Ответ

16 голосов
/ 21 марта 2012

В документации Underscore.js говорится следующее (выделение добавлено):

Если разделители в стиле ERB не являются вашей чашкой чая, вы можете изменить настройки шаблона Underscore наиспользуйте разные символы, чтобы выделить интерполированный код.Определите интерполированное регулярное выражение для сопоставления выражений, которые следует дословно интерполировать, escape-регулярное выражение для сопоставления выражений, которые должны быть вставлены после экранирования HTML , и регулярное выражение для сопоставления выражений, которые должны оцениваться без вставки в результирующийstring.

Таким образом, вы можете просто дать объекту _.templateSettings свойство escape:

_.templateSettings.escape = /\{\{-(.*?)\}\}/g
>>> compiled = _.template("Escaped: {{- value }}\nNot escaped: {{ value }}")
>>> compiled({value: 'Hello, <b>world!</b>'})
"Escaped: Hello, &lt;b&gt;world!&lt;&#x2F;b&gt;
Not escaped: Hello, <b>world!</b>"
...