Skip to content

epoberezkin/koa-dot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

koa-dot

doT for koa with pre-processing and layout support

npm install koa-dot --save

doT templates have compile-time defines that makes using them with existing rendering middlewares difficult. This middleware uses doT.process that pre-compiles all templates in a folder.

It also allows easily replace interpolation symbols (e.g. to use doT templates together with angular) without redefining all interpolation patterns manually.

If you need to compile additional templates in some other folder (e.g., if you need dynamically defined partials), you can use process or compile functions that are exposed as properties (as well as other doT properties):

process = require('koa-dot').process;
var subviews = process({ path: './views/subviews' });

// inside middleware
// ...
this.state.subviews = subviews;
yield this.render('view');
// ...

In addition to options that doT supports, process function supports 'interpolation' option and multiple paths (as in middleware).

Middleware

var app = require('koa')()
    , dot = require('koa-dot');


app
  .use(dot({
    // other options supported by doT.process can be passed here
    path: './views',
    // or path: ['./views', './shared'],
    // .dot template names across all folders should be unique,
    // .def files are used only from the current folder (names can repeat across folders)
    layout: true, // false by default, can be layout view name
    // body: 'body', // 'body' is default, only used with layout
    interpolation: { start: '<%', end: '%>' } // allows to replace '{{' and '}}'
  }))
  .use(function *() {
    this.state.title = 'Home';
    yield this.render('home');
    // data can be passed as 2nd argument, this.state is used by default
  });

Templates

layout.dot

<!DOCTYPE html>
<html>
<head>
    <title><%= it.title %></title>
</head>
<body>
    <%= it.body %>
</body>
</html>

home.dot

<div>Hello world!</div>

License

The MIT License (see LICENSE).

About

doT for koa with caching and layout support

Resources

License

Stars

Watchers

Forks

Packages

No packages published