Recommended jQuery templates for 2012? [duplicate]

jQuery Templates have been deprecated for some time now.

I have some data in the form of a JavaScript object that I want to format as HTML and append to the DOM. What's the best way of doing that these days?

  1. Should I build up an HTML string?
  2. Should I create elements via jQuery such as $('<li>',{id:'my-'+Id}).append($('<span>').text(myText)) ?
  3. Is there a replacement or mature substitute for jQuery templates?

Solution 1:

This is how I do it in my projects:

Define a template in your HTML:

<script type="text/template" id="cardTemplate">
<div>
    <a href="{0}">{1}</a>
</div>
</script>

Use string.format to substitute variables:

var cardTemplate = $("#cardTemplate").html();
var template = cardTemplate.format("http://example.com", "Link Title");
$("#container").append(template);

string.format:

String.prototype.format = function() {
  var args = arguments;
  return this.replace(/{(\d+)}/g, function(match, number) { 
    return typeof args[number] != 'undefined'
      ? args[number]
      : match
    ;
  });
};

Pretty simple, you can even combine templates.

Solution 2:

You should definitely try Handlebars and/or Mustache

I tend to use Handlebars but the syntax is quite similar.

Solution 3:

Mustache.js is quite good for templating.

https://github.com/janl/mustache.js