express3-dot

doT stub for Express 3.x with caching and layout support

express3-dot

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

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', { });
})
 

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 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 ){ ... }
});
...