marko/docs/koa.md
Michael Rawlings 0f5e639775 Format + lint (#1016)
* add prettierignore

* switch to eslint:recommended + eslint-config-prettier

* fix eslint violations

* remove more .jshintrc files

* better conditional structure

* add prettier and update prettier ignore

* add precommit hook to run prettier

* add lint check to precommit and format check to ci

* format all the things

* add generated files

* let npm do it's thing with package.json
2018-03-09 10:02:11 -08:00

1.1 KiB

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);