doT stub for Express 3.x with caching and layout support
JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore Initial commit Jun 27, 2012
README.md small change Dec 13, 2012
example_app.js Create example_app.js Dec 13, 2012
express-dot.js Update express-dot.js Dec 13, 2012
index.dot Update index.dot Dec 13, 2012
layout.dot Create layout.dot Dec 13, 2012
package.json updated version to 0.1.2 Dec 13, 2012
partial.dot Create partial.dot Dec 13, 2012

README.md

express3-dot

doT stub for Express 3.x with caching and layout support. This an edited version with patial loading support.

Install

Install original repository

$ npm install express-dot

or you can use my fork on github

$ npm install https://www.github.com/daraser/express-dot/tarball/master

Warnning not tested yet

##Setup

...

// load express doT
var doT = require('express-dot');

// (optional) set globals any thing you want to be exposed by this in {{= }} and in def {{# }}
doT.setGlobals({ ... });

// setup rendering

app.configure(function() {

  ...

  // set views folder
  app.set('views', __dirname + '/views');

  // doT engine
  app.set('view engine', 'dot' );
  app.engine('dot', doT.__express );
	
  ...
	
});

app.get('/', function(req, res){
  // you need to have in views folder
  res.render('index', { });
})

Options

You can set up parts of rendering

...
res.render(
   '...', // current body template will be passed to layout template as {{=it.body}} 
   
   {
       // cache should be set to true in production enviroment.
       cache : false,
       // null - default behavior (will look for [viewDir]/layout.dot file; 
       // boolean - makes doT render without layout file, 
       // string path - looks for *.dot file to use for layout  
       layout : false,
       // any other data which you want to be exposed for the template by {{=it.<myParam>}}
       ... 
   }, 
   
   function(err, str_template){
       // callback
   }
);
...

Globals

Globals are exposed as {{#def}} and {{= this}}. So anything you want to use globaly should be exposed.

...
doT.setGlobals({

   // set any function or property to be exposed in template
   ...,
   
   // global configuration
   // default is false, set true in production enviroment to cache partials 
   partialCache : false, 
   
   // reserved functionality will throw error if globals have 
   // load is reserved for partial loading. {{#def.load('/patials/sample.dot')}} it will load partial template from
   // __dirname + file path
   load : function(path ){ ... }
});
...