0.0.3 • Published 12 years ago

templet v0.0.3

Weekly downloads
10
License
-
Repository
github
Last release
12 years ago

#Templet

npm install templet

A tiny templating engine for Node.

##Usage

Templet does no caching or inline JavaScript evaluation (yet). Any ulterior responsibilities are left to you. It simply renders some template pseudo-HTML based on a mustache style {{ (open) and }} (close) tags.

var templet = require('templet');
templet.render('The time is {{time}}', {time:new Date().toUTCString()});

...or you can set the open/close tags yourself and try your luck with your existing templates:

templet.open('<%');
templet.set('close', '%>');

###Using default templates

Templet comes with a base template which has two variables: title and body.

var templet = require('templet');
var page = templet.render(templet.TEMPLATES.BASE, {title:'My Title', body:'Greetings'});

###Using http.ServerResponse.render

Templet also extends http.ServerResponse with render method.

var base = templet.TEMPLATES.BASE;
http.addListener('request', function(req, res) {
  res.render(base, {title:'My Title', body:new Date().toUTCString()});
});

###Building an element jQuery-style

Templet has also methods for creating an element with a chainable interface, a la jQuery.

  var el = templet.createElement('div')
  .id('mydiv')
  .class('divver')
  .getHTML();

You could use this generated element in some template:

var templet = require('templet');
var base = templet.TEMPLATES.BASE;

var date = templet.createElement('div')
.attr('id', 'date')
.text(new Date().toUTCString())
.getHTML();

var page = templet.render(base, {title:'My Title', body:date});

You can also use appendChild and appendTo for building some HTML.

var date = templet.createElement('div').text(new Date().toUTCString());
var container = templet.createElement('section').appendChild(date);

... but we should stop before replicating the entire DOM.

###Use with caution

While basic string manipulation is fast enough, it's generally more efficient to use Node as an AJAX JSON service for dynamic content.