mirror of
https://github.com/marko-js/marko.git
synced 2026-01-25 15:03:04 +00:00
61 lines
1.2 KiB
Markdown
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);
|
|
```
|