As you may know, Crawlable has some specific needs on the client and server side to work. That's why Solidify
also has two modules, one for Node.js and another for jQuery.

Here are the features Solidify handles:

A specific client side template compilation in case the client has its user-agent set to a special value (Crawlable generates
its cache by requesting the routes with PhantomJs configured with this special user-agent).

A specific server side template feeder. It interprets the Solidify compiled templates meta-data in order to fetch some dynamic
data before rendering it.

{{solidify ["method"] "/my/api/route"}} specifies a request to do when Crawlable will need some data to feed the template
(on the server side only).

{{solidify-include "/my/template/path"}} specifies a template to include (on the server side only).

{{[#]solidify-helperName}} calls an helper (on the server side only).

{ {[#]helperName} } calls an helper (on the client and server side).

{ {fieldName} } dereferences a field (on the client and server side).

Notice that every other HandleBars syntax are available, and all the syntax we saw which are used on the server side only
are completely ignored by Solidify on the client side, so it has no influence on your client side original templates.

For this example, we imagine we want to render a list with Backbone.js.
We have a Collection and a View, rendering an ItemView for each Model of our Collection.

Here is the Item template:

<!-- specify the needed request to fetch the data -->

{{solidify "/api/items"}}

<!-- the same as {{#each}}, but for the server side rendering only (client will ignore it) -->

{{#solidify-each "this"}}

<!-- dereference the field content, will be interpreted on the client and server side -->

<li>{ {content} }</li>

{{/solidify-each}}

Now here is the List template:

<div>

<h1>My list</h1>

<div>

<!-- Include a template. This is for the server side only, the client simply ignore it -->

{{solidify-include "/templates/item.html"}}

</div>

</div>

As you can see, we say to Solidify to fetch the items by doing a request to the host. Then, for each item we
dereference the content variable so it will be injected into each li.
Notice we include the Item template into the List template. This is for convenience when using some Backbone.js views.