EDBloggen

Alexander Karlstad. Blogger hovedsakelig om Linux og sånt.

Javascript-templates (og AJAX-lasting med jQuery)

Eksempel:

var foo = '<strong>{{foo}}</strong>';
Mustache.to_html({'foo': 'bar'}, foo);

Blir faktisk til

<strong>bar</strong>

Hvis vi tar det videre og benytter oss av seksjoner, kan vi gjøre noe som dette:

var foo = '<ul>{{#section}}<li><a href="{{url}}">{{name}}</a></li>{{/section}}</ul>';

Mustache.to_html({
  'section': [
    {'name': 'Ola Nordmann', 'url': 'http://facebook.com/ola.nordmann'},
    {'name': 'Kirsten Giftekniv', 'url': 'http://facebook.com/kirsten.gift'}
  ]
}, foo);

HTML-koden som kommer ut av dette, blir da:

<ul>
	<li><a href="http://facebook.com/ola.nordmann">Ola Nordmann</a></li>
	<li><a href="http://facebook.com/kirsten.gift">Kirsten Giftekniv</a></li>
</ul>

Med andre ord så takler rammeverket fint å traversere arrays. Så kan vi se videre på å skrive en plugin til jQuery. Mitt eget er veldig enkelt, og API-et er som følger:

$.renderTemplate(template, data, function(html) {
  $(someObject).append(html);
});

Selve kildekoden til jQuery-pluginen ser da slik ut:

$.loadTemplate = function(template, fn) {
    $.ajax(template, { 'cache': false, 'success': fn }); // cache bør du vurdere selv om du vil slå av eller på
}

$.renderTemplate = function(tepmlate, data, fn) {
  $.ajax(template, {
    'cache': false,
    'success': function(raw) {
      fn(Mustache.to_html(raw, data));
    }
  });
}

//Eksempel:
$.renderTemplate('/templates/foo.txt', {
  'section': {
    'foo': 'bar',
    'bar': 'baz'
  }
}, function(html) {
  $('en eller annen selector').append(html);
}

Skrevet av Alexander Karlstad

1. mars 2012 klokken 17.20

Skriv en kommentar

Optimization WordPress Plugins & Solutions by W3 EDGE