Marko

Koa + Marko

See the marko-koa sample project for a fully-working example.

Installation

npm install koa --save
npm install marko --save

Usage

require('marko/node-require');
 
const Koa = require('koa');
const app = new Koa();
 
const template = require('./index.marko');
 
app.use((ctx, next) => {
    ctx.type = 'html';
    ctx.body = template.stream({
        name: 'Frank',
        count: 30,
        colors: ['red', 'green', 'blue']
    });
});
 
app.listen(8080);

You may also easily add gzip streaming support without additional dependencies:

require('marko/node-require');
const { createGzip } = require('zlib');
 
const Koa = require('koa');
const app = new Koa();
 
const template = require('./index.marko');
 
app.use((ctx, next) => {
    ctx.type = 'html';
    ctx.body = template.stream({
        name: 'Frank',
        count: 30,
        colors: ['red', 'green', 'blue']
    });
 
    ctx.vary('Accept-Encoding');
    if (ctx.acceptsEncodings('gzip')) {
        ctx.set('Content-Encoding', 'gzip');
        ctx.body = ctx.body.pipe(createGzip());
    }
});
 
app.listen(8080);
EDIT

Contributors

Helpful? You can thank these awesome people! You can also edit this doc if you see any issues or want to improve it.