marko/docs/koa.md

61 lines
1.2 KiB
Markdown

# Koa + Marko
See the [marko-koa](https://github.com/marko-js-samples/marko-koa) sample
project for a fully-working example.
## Installation
npm install koa --save
npm install marko --save
## Usage
```javascript
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:
```javascript
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);
```