Использование интервала {} и # {} в шаблоне нефрита (восклицательный объект, хэш-объект)

В шаблоне нефрита (с использованием выражения над node.js) я вижу шаблон с использованием следующего синтаксиса:

script(type='text/template', id='data-services') !{data}

Я не понимаю конструкцию !{ }; по-видимому, он интерполирует объект javascript, определенный в другом месте:

var data={ name:"Doe", age:"21" };

Jade docs & tuts показывают использование #{ } для интерполяции, но я не вижу !{ }. Даже #{ } не задокументирован, поэтому я думаю, что это не специфично для jade. Откуда появился этот синтаксис и где он задокументирован?

Ответ 1

На самом деле его очень трудно найти. Посмотрите на этот ресурс:

http://naltatis.github.io/jade-syntax-docs/#escaping

# используется, когда вы хотите избежать данных и ! когда вы хотите, чтобы он был сырым.

Например, скажем, что name = "Hello <em>World</em>". Тогда у вас есть:

#{name} --> Hello &lt;em&gt;World&lt;/em&gt;
!{name} --> Hello <em>World</em>

Подумайте об этом так: # будет отображать name поскольку оно написано в то время как ! будет рассматривать его как HTML.