Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using !{ } and #{ } interpolation in a jade template (exclamation-object, hash-object)

In a jade template (using express over node.js), I see a template using the following syntax:

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

I don't understand the !{ } construct; apparently it interpolates a javascript object defined elsewhere as:

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

Jade docs & tuts show the use of #{ } for interpolation, but I don't see !{ }. Even #{ } is not documented, so I think it's not jade-specific. Where does this syntax come from and where is it documented?

like image 971
user3271541 Avatar asked Feb 04 '14 16:02

user3271541


1 Answers

Quite difficult to find it, indeed. Have a look at this resource:

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

# is used when you want to escape data and ! when you want it raw.

For example let's say that name = "Hello <em>World</em>". Then you have:

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

Think about it like that: # will display name as it is written while ! will treat it as HTML.

like image 99
freakish Avatar answered Sep 25 '22 16:09

freakish